当前位置:网站首页>Unity editor expansion - draw lines
Unity editor expansion - draw lines
2022-07-03 08:27:00 【T.D.C】
Draw lines
- Use Handles Class to draw various lines
design sketch

The sample code
using UnityEditor;
using UnityEngine;
namespace DC.DCIMGUIBox
{
public class DrawLineWindow : EditorWindow
{
[MenuItem("DC/IMGUI/DrawLineWindow")]
public static void Open()
{
var window = GetWindow<DrawLineWindow>();
window.minSize = new Vector2(800, 600);
}
public Vector3 startPos = new Vector3();
public Vector3 endPos = new Vector3(500, 100);
public Vector3 startTangent = new Vector3(20, 0);
public Vector3 endTangent;
public Vector3 startPos2 = new Vector3();
public Vector3 endPos2 = new Vector3(500, 100);
public Vector3 startTangent2 = new Vector3(20, 0);
public Vector3 endTangent2;
public bool lineA = true;
public bool lineB = true;
public void OnGUI()
{
GUILayout.Label("red line");
startPos = CustomControls.Float3Field("start",startPos);
endPos = CustomControls.Float3Field("end", endPos);
startTangent = CustomControls.Float3Field("startTangent", startTangent);
endTangent = CustomControls.Float3Field("endTangent", endTangent);
GUILayout.Space(20);
GUILayout.Label("green line");
startPos2 = CustomControls.Float3Field(startPos2);
endPos2 = CustomControls.Float3Field(endPos2);
startTangent2 = CustomControls.Float3Field(startTangent2);
endTangent2 = CustomControls.Float3Field(endTangent2);
GUILayout.Space(20);
GUILayout.BeginHorizontal();
lineA = GUILayout.Toggle(lineA, "draw red", GUILayout.Width(100));
lineB = GUILayout.Toggle(lineB, "draw green", GUILayout.Width(100));
GUILayout.EndHorizontal();
if(lineA)
Handles.DrawBezier(startPos, endPos, startTangent, endTangent, Color.red, CustomControls.texture2d, 1);
if(lineB)
Handles.DrawBezier(startPos2, endPos2, startTangent2, endTangent2, Color.green, CustomControls.texture2d, 1);
}
}
}
The library files
using UnityEditor;
using UnityEngine;
namespace DC.DCIMGUIBox
{
public class CustomControls
{
public static Texture2D texture2d = new Texture2D(1,1);
public static Vector3 Float3Field(string ctrlName, Vector3 input, params GUILayoutOption[] options)
{
EditorGUILayout.BeginHorizontal();
GUILayout.Label(ctrlName);
input.x = EditorGUILayout.FloatField(input.x, options);
input.y = EditorGUILayout.FloatField(input.y, options);
input.z = EditorGUILayout.FloatField(input.z, options);
EditorGUILayout.EndHorizontal();
return input;
}
public static Vector3 Float3Field(Vector3 input, params GUILayoutOption[] options)
{
EditorGUILayout.BeginHorizontal();
input.x = EditorGUILayout.FloatField(input.x, options);
input.y = EditorGUILayout.FloatField(input.y, options);
input.z = EditorGUILayout.FloatField(input.z, options);
EditorGUILayout.EndHorizontal();
return input;
}
public static Vector4 Float4Field(Vector4 input, string ctrlName, params GUILayoutOption[] options)
{
EditorGUILayout.BeginHorizontal();
GUILayout.Label(ctrlName);
input.x = EditorGUILayout.FloatField(input.x, options);
input.y = EditorGUILayout.FloatField(input.y, options);
input.z = EditorGUILayout.FloatField(input.z, options);
input.w = EditorGUILayout.FloatField(input.w, options);
EditorGUILayout.EndHorizontal();
return input;
}
public static Vector4 Float4Field(string ctrlName, Vector4 input, params GUILayoutOption[] options)
{
EditorGUILayout.BeginHorizontal();
GUILayout.Label(ctrlName);
input.x = EditorGUILayout.FloatField(input.x, options);
input.y = EditorGUILayout.FloatField(input.y, options);
input.z = EditorGUILayout.FloatField(input.z, options);
input.w = EditorGUILayout.FloatField(input.w, options);
EditorGUILayout.EndHorizontal();
return input;
}
}
}
边栏推荐
- Ue5 opencv plug-in use
- [public key cryptography] ECC elliptic cryptosystem (implementing ElGamal encryption method)
- Editor Extensions
- Map的实现类的顺序性
- Transmit pictures with Base64 encoding
- Student educational administration management system of C # curriculum design
- Get to know unity2 for the first time
- Haproxy+kept build 01
- 使用base64编码传图片
- [set theory] order relation (hastu example | divisive relation hastu | inclusive relation hastu | refinement relation hastu)
猜你喜欢

數據庫應用技術課程設計之商城管理系統

Image processing 8-cnn image classification

Kwai 20200412 recruitment

Graphics_ Games101/202 learning notes

Dealing with duplicate data in Excel with xlwings

Transplantation of freetype Library
![[set theory] order relation (the relation between elements of partial order set | comparable | strictly less than | covering | Haas diagram)](/img/df/a034032e203e7935dafaf8a71cb6c8.jpg)
[set theory] order relation (the relation between elements of partial order set | comparable | strictly less than | covering | Haas diagram)

详解sizeof、strlen、指针和数组等组合题

Redis data structure

Thymeleaf 404 reports an error: there was unexpected error (type=not found, status=404)
随机推荐
Advanced OSG collision detection
Shader foundation 01
Cloudcompare learning (1) - cloudcompare compilation and common plug-in implementation
Creation and content of mapnode -- osgearth rendering engine series (2)
[usaco12mar]cows in a skyscraper g (state compression DP)
了解小程序的笔记 2022/7/3
Haproxy+kept cluster setup 02
String class
Redis cluster series 4
Graphics_ Games101/202 learning notes
Constraintlayout's constraintset dynamically modifies constraints
Redis的数据结构
How does unity fixedupdate call at a fixed frame rate
Unity interactive water ripple post-treatment
[public key cryptography] ECC elliptic cryptosystem (implementing ElGamal encryption method)
P1596 [USACO10OCT]Lake Counting S
Kunlunbase meetup is waiting for you!
Multi traveling salesman problem -- overview of formula and solution process
C语言-入门-精华版-带你走进编程(一)
Youyou1 of xlua knapsack system