游戏蛮牛学习群(纯技术交流,不闲聊):539178957
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:779

当前位置:游戏蛮牛 技术专区 教程分享

查看: 516|回复: 5

[系列教程] Unity编辑器入门(二)如何编写自己的Attribute

[复制链接]  [移动端链接]
排名
6491
昨日变化
51

12

主题

79

帖子

599

积分

Rank: 9Rank: 9Rank: 9

UID
215257
好友
4
蛮牛币
1486
威望
0
注册时间
2017-3-29
在线时间
290 小时
最后登录
2018-8-17

迈向小康

发表于 2018-5-4 10:34:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 m2675 于 2018-5-9 16:33 编辑


我突然发现一件事,这篇包括上一篇里都用到了UnityEditor命名空间下的代码,但是我都没有讲这些代码的意思。那尽早结束这一篇,然后今晚上再写一篇总结一下吧。自定义Attribute有什么用,这是第一个问题我现在的回答是  我也不知道有什么用,但是会了总比不会好,感兴趣的接着看下去,以后的项目万一需要用了最起码有个思路对吧。第二个问题是,Attribute是什么。第一篇已经写了,比如[HideInInspector]这玩意就是个Attribute,我们F12看看它就可以了。

D49SPLGO126RV9XWN]__C]M.png
当然由于Unity的给你封装了,所以只能看个大概,这个类里面没有字段,只有个构造方法。接下来我们开始制作自己的Attribute。这里需要用到PropertyAttribute作为基类,我们F12看看这个类是干嘛的。

C]HAYUJB{[F@ZNZW1]J4D.png


噢,依旧看不到它,我现在的理解就是这个玩意就是提供给开发者自定义属性的吧,里面多了一个order字段,我用有道翻译了一下,不知道是啥意思,不过聪明机智的我猜它可能是某个意思,这篇最后讲。我们随便定义一个类,让它继承PropertyAttribute
CMS09R8E4K389(7%NQYWJ4C.png
然后定义两个字段,再给它两个构造方法。就好啦。

接着再弄一个类。就叫做TestAttributeDrawer好了,继承自PropertyDrawer。
L`4C1LZZGNE0~QIIJ)XCV0S.png


...这篇文章我会经常更新的,这个类目前只知道是用来绘制自定义属性的,它的父类我也没研究过,包括它头上的那个类,目前这么写就好了。明天估计还会更一次这个。接着说说这两个方法OnGUI这个方法以后会很常见,用来绘制属性的,一般看很古老的Unity教程,界面也是用OnGUI来写的,但是在NGUI和UGUI都很火的今天,我们写编辑器依然要用到这个方法。GetPropertyHeight这玩意我也没有见过,我也是刚刚百度出来的,大致是用来绘制属性区域的吧。再说说它们的参数,positionRect型的,xywh,分别是绘制起点x,y坐标,然后是框的宽度和高度。property里面保存的是TestAttribute这个类里面的信息labelGUIContent类型的,这个是以后也会经常用到的类型,用来绘制所有形状和大小。感兴趣的可以F12输出一下里面的三个字段是什么。
(8_6]2ZB9]RX_U92772{L2C.png

PPHKUO%PO`[~C8SS16X%D_K.png


9}KTY2OT@849XNEI~0BXVA4.png
)I5O0E7EO}0N_76{{AI`I7L.png

大致就是这个意思了!好了,讲完这两个方法之后接着说。创建一个类 TestMono 继承Mono的挂在物体上。
4WBY8@QS[)W`A)HWF(C)B.png

Test哪里来的呢?  其实就是我们的TestAttribute类的简称,后面的参数也就是TestAttribute类的构造方法而已。接下来只需要看我们的挂载这个脚本的物体的Inspector面板就好了。当然,OnGUI方法里面还有东西要讲。
ZUUCFAS{0~CNUD1(4OQC)VY.png


只能随便讲一下,property的类型是SerializedProperty,看了一下内容太多了。只能讲我稍微会点的。property.propertyType是绑定这个Attribute的字段的类型,有很多,可以自己设置的。看内容也知道是什么了吧,定义一个字符串,然后将我们上面TestMono那个类的sssss的值转字符串后赋给它。接着用EditorGUI输出就好了。TestAttribute my = (TestAttribute)attribute;这个attribute就是一个PropertyAttribute类型的变量,为自定义Attribute而生的。好了  关于自定义Attribute就讲完了。照着敲应该就OK了,如果报错的话自己找BUG或者留言。下面再写一个无关的东西,等系列彻底成型了再去掉吧。
D6P2YPR@X6R03${2N{N3W.png
3P%O%O4JK1{NS0[4%7[`DB1.png

新建文本文档.txt

64 Bytes, 下载次数: 1

售价: 1 蛮牛币  [记录]


回复

使用道具 举报

排名
29500
昨日变化
7

0

主题

4

帖子

24

积分

Rank: 1

UID
184258
好友
0
蛮牛币
7
威望
0
注册时间
2017-2-23
在线时间
10 小时
最后登录
2018-5-23
发表于 2018-5-4 11:39:39 | 显示全部楼层
顶一顶{:91:}{:91:}{:91:}{:91:}{:91:}

回复 支持 反对

使用道具 举报

7日久生情
3150/5000
排名
2218
昨日变化
7

0

主题

2101

帖子

3150

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
1
蛮牛币
2424
威望
0
注册时间
2017-7-12
在线时间
465 小时
最后登录
2018-8-17

活力之星

发表于 2018-5-4 17:32:53 | 显示全部楼层
谢谢分享

回复

使用道具 举报

5熟悉之中
542/1000
排名
4457
昨日变化
24

0

主题

63

帖子

542

积分

Rank: 5Rank: 5

UID
229891
好友
0
蛮牛币
715
威望
0
注册时间
2017-7-2
在线时间
179 小时
最后登录
2018-8-17
发表于 2018-5-5 09:02:23 | 显示全部楼层
很好的分享!

回复

使用道具 举报

6蛮牛粉丝
1484/1500
排名
25323
昨日变化
6

3

主题

736

帖子

1484

积分

Rank: 6Rank: 6Rank: 6

UID
63377
好友
0
蛮牛币
20
威望
0
注册时间
2014-12-24
在线时间
733 小时
最后登录
2018-8-17
发表于 2018-5-5 12:33:21 | 显示全部楼层
很不错哦萨哈文化人好玩儿
[发帖际遇]: 商城新_e88uA 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

7日久生情
3741/5000
排名
161
昨日变化
1

1

主题

508

帖子

3741

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
11004
好友
0
蛮牛币
4333
威望
0
注册时间
2013-12-24
在线时间
1114 小时
最后登录
2018-8-15

VIP

发表于 2018-5-7 21:31:27 | 显示全部楼层
没好好研习过这个类

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表