博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Unity] Unity3D研究院编辑器之独立Inspector属性
阅读量:7080 次
发布时间:2019-06-28

本文共 1221 字,大约阅读时间需要 4 分钟。

本文转自:

 

Unity提供了强大的Editor功能, 我们可以很轻易的在EditorGUI中绘制任意的属性。比如我之前写的文章 

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

数据代码:

using UnityEngine;using System.Collections; public class MyTestAttribute : PropertyAttribute {     public int max;    public int min;     public MyTestAttribute(int a, int b){        min =a;        max =b;    }}

 

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

using UnityEditor;using System.Collections.Generic;using UnityEngine;  [CustomPropertyDrawer(typeof(MyTestAttribute))]public class MyTestDrawer : PropertyDrawer {      public override void OnGUI (UnityEngine.Rect position, SerializedProperty property, UnityEngine.GUIContent label)    {        MyTestAttribute attribute = (MyTestAttribute)base.attribute;         property.intValue =Mathf.Min(Mathf.Max(EditorGUI.IntField(position,label.text,property.intValue),attribute.min),attribute.max);    }}

 

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

using UnityEngine;using System.Collections; public class Game : MonoBehaviour {     [MyTestAttribute(0,100)]    public int intValue = 0;}

 

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

 

转载于:https://www.cnblogs.com/yangyxd/p/5304797.html

你可能感兴趣的文章
JAVA流之管道流PipedInputStream,PipedOutputStream
查看>>
golang gopath的新用法
查看>>
Java线程中断的本质深入理解
查看>>
Git---基础(转)
查看>>
python/c++ 深拷贝与浅拷贝(转)
查看>>
mysql数据库的常见问题;
查看>>
CentOS7安装Tomcat
查看>>
动态重载与静态重载
查看>>
js循环的是数组不是对象
查看>>
tomcat 配成用 https方式访问
查看>>
木马各种隐藏技术全方位大批露,病毒或木马
查看>>
BitmapFactory.Options详解
查看>>
AutoLayout 使用之代码实现(VFL)
查看>>
Freemarker常用内建函数
查看>>
读 linux_101_hacks 有感
查看>>
运用@media实现网页自适应中的几个关键分辨率
查看>>
redis配置认证密码
查看>>
码农十年连载一
查看>>
Notice: Undefined index: REQUEST_URI in
查看>>
[webAPP项目]基于MUI框架开发APP功能点开发详解大纲
查看>>