当前位置:网站首页>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;
}
}
}
边栏推荐
- 基于SSM的校园失物招领平台,源码,数据库脚本,项目导入运行视频教程,论文撰写教程
- OpenGL learning notes
- matlab神经网络所有传递函数(激活函数)公式详解
- Get to know unity2 for the first time
- MXone Pro自适应2.0影视模板西瓜视频主题苹果cmsV10模板
- ArrayList
- the installer has encountered an unexpected error installing this package
- Conversion between string and int types in golang
- UE4 source code reading_ Bone model and animation system_ Animation node
- Introduction to Base64 coding
猜你喜欢

php-fpm软件的安装+openresty高速缓存搭建
![[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)

Unity interactive water ripple post-treatment

Data analysis exercises

GIS实战应用案例100篇(七十八)-多规合一数据库设计及数据入库

Basic operation and process control

matlab神經網絡所有傳遞函數(激活函數)公式詳解

Some understandings of 3dfiles

UE4 source code reading_ Bone model and animation system_ Animation process
![P1596 [USACO10OCT]Lake Counting S](/img/a7/07a84c93ee476788d9443c0add808b.png)
P1596 [USACO10OCT]Lake Counting S
随机推荐
Editor Extensions
Explain sizeof, strlen, pointer, array and other combination questions in detail
Huawei interview summary during the epidemic
Flex flexible box layout
GIS实战应用案例100篇(七十八)-多规合一数据库设计及数据入库
Oracle insert single quotation mark
Get to know unity2 for the first time
Data analysis exercises
What does (+) in Oracle mean
Solution détaillée de toutes les formules de fonction de transfert (fonction d'activation) du réseau neuronal MATLAB
Image processing 8-cnn image classification
Minimap plug-in
Transfinite hacker cognition
VIM learning notes from introduction to silk skating
[usaco12mar]cows in a skyscraper g (state compression DP)
Graphics_ Games101/202 learning notes
Animation_ IK overview
Advanced OSG collision detection
图像处理8-CNN图像分类
php-fpm软件的安装+openresty高速缓存搭建