Notifications
Article
Odin Inspector 系列教程 --- Custom Value Drawer Attribute
Published 5 months ago
128
0
Odin Inspector 系列教程 --- Custom Value Drawer Attribute
Custom Value Drawer Attribute 特性,允许用户自定义一个绘制方法,字段将以自定的绘制方式展示在Inspector中,非常灵活。

含有Label和不含有Label的字段

[CustomValueDrawer("HaveLabelNameFunction")] public string HaveLabelName; [CustomValueDrawer("NoLabelNameFunction")] public string NoLabelName; public string HaveLabelNameFunction(string tempName, GUIContent label) { return EditorGUILayout.TextField(tempName); } public string NoLabelNameFunction(string tempName, GUIContent label) { return EditorGUILayout.TextField(label,tempName); }

绘制Slider滑动条

public float Max = 100, Min = 0; [CustomValueDrawer("MyStaticCustomDrawerStatic")] public float CustomDrawerStatic; private static float MyStaticCustomDrawerStatic(float value, GUIContent label) { return EditorGUILayout.Slider(label, value, 0f, 10f); } [CustomValueDrawer("MyStaticCustomDrawerInstance")] public float CustomDrawerInstance; private float MyStaticCustomDrawerInstance(float value, GUIContent label) { return EditorGUILayout.Slider(label, value, this.Min, this.Max); } [CustomValueDrawer("MyStaticCustomDrawerArray")] public float[] CustomDrawerArray = new float[] { 3f, 5f, 6f }; private float MyStaticCustomDrawerArray(float value, GUIContent label) { return EditorGUILayout.Slider(value, this.Min, this.Max); }

完整示例代码

using Sirenix.OdinInspector; using UnityEditor; using UnityEngine; public class CustomValueDrawerExample : MonoBehaviour { public float Max = 100, Min = 0; [CustomValueDrawer("MyStaticCustomDrawerStatic")] public float CustomDrawerStatic; private static float MyStaticCustomDrawerStatic(float value, GUIContent label) { return EditorGUILayout.Slider(label, value, 0f, 10f); } [CustomValueDrawer("MyStaticCustomDrawerInstance")] public float CustomDrawerInstance; private float MyStaticCustomDrawerInstance(float value, GUIContent label) { return EditorGUILayout.Slider(label, value, this.Min, this.Max); } [CustomValueDrawer("MyStaticCustomDrawerArray")] public float[] CustomDrawerArray = new float[] { 3f, 5f, 6f }; private float MyStaticCustomDrawerArray(float value, GUIContent label) { return EditorGUILayout.Slider(value, this.Min, this.Max); } [CustomValueDrawer("HaveLabelNameFunction")] public string HaveLabelName; [CustomValueDrawer("NoLabelNameFunction")] public string NoLabelName; public string HaveLabelNameFunction(string tempName, GUIContent label) { return EditorGUILayout.TextField(tempName); } public string NoLabelNameFunction(string tempName, GUIContent label) { return EditorGUILayout.TextField(label,tempName); } }

更多教程内容详见:革命性Unity 编辑器扩展工具 --- Odin Inspector 系列教程

海澜
低端打杂人员 - Programmer
18
Comments