首页 > Unity3D频道 > 【Unity3D拓展编辑器】 > Unity3D研究院编辑器之独立Inspector属性(九)
2015
10-21

Unity3D研究院编辑器之独立Inspector属性(九)

Unity提供了强大的Editor功能, 我们可以很轻易的在EditorGUI中绘制任意的属性。比如我之前写的文章  http://www.xuanyusong.com/archives/2202

那么问题就来了,如果我有多属性想共用同一段自定义控件,那么这种方法我就需要在多份代码里绘制控件了OnInspectorGUI 这一节中我们需要用到两个全新的自定义属性PropertyAttribute和PropertyDrawer。 可以理解为一个是数据,一个是渲染。

数据代码:

渲染代码,如果你想做一些复杂的结构,直接在OnGUI里面插入代码即可。

最后在需要用这个通用组件的代码上添加如下代码即可。

如下图所示,这个属性的渲染就已经完全独立出来了。

Unity3D研究院编辑器之独立Inspector属性(九) - 雨松MOMO程序研究院 - 1

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院编辑器之独立Inspector属性(九)》有 5 条评论

  1. 六翼 说:

    using UnityEngine;public class MyArrayAttribute : PropertyAttribute{ public string boolName; public bool isShowWithTrue; public MyArrayAttribute(string boolName, bool isShowWithTrue) { this.boolName = boolName; this.isShowWithTrue = isShowWithTrue; }}using UnityEngine;using UnityEditor;[CustomPropertyDrawer(typeof(MyArrayAttribute))]public class MyArrayDrawer : PropertyDrawer{ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { Debug.Log(property.propertyPath); }}using UnityEngine;public class Game : MonoBehaviour{ public bool show; [MyArray(“show”,true)] public int[] vals;}上面的代码,Debug.Log(property.propertyPath);打印出来的是数组的元素的propertyPath,而不是数组的propertyPath。这样是说数组不执行OnGUI()方法吗?

  2. 六翼 说:

    文章里是重新渲染int类型的值,怎么重新渲染数组类型呢?

  3. kicwzy 说:

    如果自定义属性占多行,怎么写才能使与下面的属性不重叠?

留下一个回复

你的email不会被公开。