Unity编辑器扩展
Posted Hichy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity编辑器扩展相关的知识,希望对你有一定的参考价值。
四类1. ScriptableObject 只有菜单
2. ScriptableWizard 向导对话框 简单的输入 响应一下确认按钮
3. EditorWindow 编辑对话框
4. Editor
绘制ui函数的各种空间
GUI
GUILayout
EditorGUI Editor下专用的各种控件,动画曲线什么的
EditorGUILayout
ScriptableWizard
OnWizardUpdate()
OnWizardCreate()
ScriptableWizard.DisplayWizard("Title", typeof(ClassName), "BtnName");
EditorWindow OnInspectorUpdate每帧检查 需要的时候调用 Repaint()
OnGUI() 在需要的时候调用
Editor 可以用来自定义某个组件的Inspector编辑界面
[CustomEditor(typeof(XXX))]
public class XXXInspector : Editor {
也可以用来做一些复杂的界面
用一个静态方法打开
[MenuItem("KingsoftTools/Skill/伤害组件监视")]
static void Init()
{
EditorWindow.GetWindow(typeof(BuffInspector));
}
Texture2D dataImg = new Texture2D(256, 256);
绘图。。。 。。。
一个点一个点设置颜色...
dataImg.Apply(); //必须调用 apply函数才会改变Texture2D
EditorPrefs
这个类可以存一些用户的编辑器设置
m_propertiesNames = EditorPrefs.GetString(string.Format("SplatProp_{0}_{1}", i, j), DefaultPropertiesNames[i, j]);
选择列表 SelectionGrid(选择的索引,列表,每行个数)
int xCount = Mathf.FloorToInt(position.width / m_ccCellSize);
m_customColIdx = GUILayout.SelectionGrid(m_customColIdx, m_customColorTex, xCount);
m_useSaveColor = GUILayout.Toggle(m_useSaveColor, "Use Save Color");
if (m_useSaveColor)
{
m_colorChannel = m_customColorLst[m_customColIdx];
}
LayerMask(选择层级,多选框式)
x
1
static LayerMask LayerMaskField(string label, LayerMask layerMask)
2
{
3
List<string> layers = new List<string>();
4
List<int> layerNumbers = new List<int>();
5
6
for (int i = 0; i < 32; i++)
7
{
8
string layerName = LayerMask.LayerToName(i);
9
if (layerName != "")
10
{
11
layers.Add(layerName);
12
layerNumbers.Add(i);
13
}
14
}
15
int maskWithoutEmpty = 0;
16
for (int i = 0; i < layerNumbers.Count; i++)
17
{
18
if (((1 << layerNumbers[i]) & layerMask.value) > 0)
19
maskWithoutEmpty |= (1 << i);
20
}
21
maskWithoutEmpty = EditorGUILayout.MaskField(label, maskWithoutEmpty, layers.ToArray());
22
int mask = 0;
23
for (int i = 0; i < layerNumbers.Count; i++)
24
{
25
if ((maskWithoutEmpty & (1 << i)) > 0)
26
mask |= (1 << layerNumbers[i]);
27
}
28
layerMask.value = mask;
29
return layerMask;
30
}
以上是关于Unity编辑器扩展的主要内容,如果未能解决你的问题,请参考以下文章
Unity代码分享Editor编辑器扩展Image和RawImage的相互转化