AutoCAD 3DMAX C言语 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab运用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 主页 > Unity3D

【Unity C#编程】自定义修正器(一)

51自学网 2014-05-24 http://www.pvc01.com

在这一篇Unity C#教程中,将在修正器中创立一个自定义可视化序列和列表。你将学会:

  • 创立自定义修正器
  • 运用
  • 控制代表序列或列表的
  • 给选项标志运用枚举
  • 运用GUI按钮

这个教程适用于Unity4.3版别或以上。老版别的能够点击这儿。

自定义列表

创立测验数据

Unity默许的列表展现是可用的,可是你也能够挑选自定义列表。详细细节因人而异。所以运用不同的可视化组合对错常有用的。经过给变量增加特点来详细指定修正器怎么显现它们。

咱们以完结的自定义数据教程项目开端,或许创立一个新的项目并导入。

然后创立一个新的测验脚本,命名为ListTester ,其间有些测验序列,并用它制造一个新的预制以及预制实例,这样咱们就能看到它按预期工作了。

1
2
3
4
5
6
7
8
9
10
11
12
using UnityEngine;
 
public class ListTester : MonoBehaviour {
 
public int[] integers;
 
public Vector3[] vectors;
 
public ColorPoint[] colorPoints;
 
public Transform[] objects;
}

新的测验目标,有着宽广的inspector.

创立自定义Inspector

自定义列表首要要为测验组件创立自定义Inspector。创立一个C#脚本,在Editor文件夹中命名为ListTesterInspector ,作为拓宽的UnityEditor.,并运用UnityEditor. 特点,告知Unity咱们想要给组件绘图。

1
2
3
4
5
6
using UnityEditor;
using UnityEngine;
 
[CustomEditor(typeof(ListTester))]
public class ListTesterInspector : Editor {
}

自定义inspector脚本

为了真实改动inspector,咱们需求重写class的OnInspectorGUI办法。假如该办法是空的,那么inspector也将是空的。

1
2
public override void OnInspectorGUI () {
}

空的inspector.

特点抽屉(property drawer)和修正器(editor.)之间有三大不同点。

  • 榜首:在修正器中,咱们用的是悉数 ,而不是独自的。
  • 第二:只需目标坚持选定,修正器实例就会存在,坚持引用它的数据,而不是经过办法参数得到它。
  • 第三:咱们能够运用,这个会主动为咱们定位方位。

咱们能够经过serializedObject特点序列化目标。为了预备它用来修正,首要要把它与它所代表的组件同步,经过调用它的Update办法。然后就能够展现特点了。在咱们做完之后,需求经过ApplyModifiedProperties办法提交一切修正。这将照看到Unity一切的吊销历史记录。在这两者之间咱们将制作特点。

1
2
3
4
5
6
7
8
public override void OnInspectorGUI () {
serializedObject.Update();
EditorGUILayout.PropertyField(serializedObject.FindProperty("integers"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("vectors"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("colorPoints"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("objects"));
serializedObject.ApplyModifiedProperties();
}

空特点的Inspector

该字段再次可见了,可是它们是空的。这是由于PropertyField 不展现任何详细选项,就像序列元素相同,除非咱们告知它这么做。

1
2
3
4
5
6
7
8
public override void OnInspectorGUI () {
serializedObject.Update();
EditorGUILayout.PropertyField(serializedObject.FindProperty("integers"), true);
EditorGUILayout.PropertyField(serializedObject.FindProperty("vectors"), true);
EditorGUILayout.PropertyField(serializedObject.FindProperty("colorPoints"), true);
EditorGUILayout.PropertyField(serializedObject.FindProperty("objects"), true);
serializedObject.ApplyModifiedProperties();
}

有详细选项的Inspector

原文链接:


主张运用电驴(eMule)下载共享的资源。

阐明
:本教程来历互联网或网友共享或出版商宣扬共享,仅为学习研讨或媒体推行,pvc01.com不确保材料的完整性。
 
上一篇:【Unity C#编程】自定义修正器(二)  下一篇:Unity动态字体文字破碎的解决办法(Dynamic Font Broken)