假设在开发过程中有这么一个需求,在一个类文件A中,存储着一个变量比如一个string类型的Sprite的名字,但是在Inspector中要显示这个Sprite,而且还要可以直接拖拽修改这个变量,重写A的Editor显然不是一个很好的解决方案,加入有很多个类似A的需求...这个时候扩展Attribute实为一个很不错的方案(ps:unity真是牛,各种方便用户自己扩展)
首先创建一个类文件SpriteNameAttribute,继承PropertyAttribute类,可以按需定制构造函数,代码如下:
using UnityEngine;
namespace AAAUnity
{
public class SpriteNameAttribute : PropertyAttribute
{
public SpriteNameAttribute()
{
}
}
}
第二步编写SpriteNameAttribute的渲染类SpriteNameAttributeDrawer继承PropertyDrawer,注意此类要放于Editor目录下:
using UnityEngine;
using UnityEditor;
using System;
namespace AAAUnity
{
[CustomPropertyDrawer(typeof(SpriteNameAttribute))]
public class SpriteNameAttributeDrawer : PropertyDrawer
{
private GUIContent m_SpriteContent = new GUIContent("