【Unity】关于属性重绘PropertyDrawer的一些吐槽(文明人不臭骂)[Unity版本:2018.3.7f1]

本文主要讨论Unity中PropertyDrawer遇到的四个问题:1)属性在List内时,对象只构造一次;2)EditorGUI.Foldout的折叠状态保存问题;3)嵌套时绘制效果不佳;4)系统在OnGUI前先调用GetPropertyHeight。作者通过实例代码展示了这些问题,并提出了解决方法,如使用字典存储数据,以及针对嵌套和绘制问题的调整。
摘要由CSDN通过智能技术生成

【未经本人同意不得私自转载!】
【文章发布于CSDN,原文链接:https://blog.csdn.net/weixin_44733774/article/details/124527137




1、若属性在List里头的话,PropertyDrawer类只会构造出一个对象

你可以对PropertyDrawer类设置构造函数,设置成员数据,这的确有用,表面看上去没问题,但一旦装进了List里头的话哪怕那列表里头有几十个元素,构造函数都只会调用一次,或者说PropertyDrawer对象就只生成了一个,这就造成了“明明单个试的时候还好好的为啥一装进容器里立马出错”的问题(惊不惊喜意不意外?),被坑害无数次的孩子在此发出幽怨的低吼声。

当时出问题时debug了几小时最后发现是这种莫名其妙的bug,我能怎么办?我也只能嘤嘤乱叫。神tm装进列表后PropertyDrawer对象只生成一个(而不是根据列表内的元素多少来生成多少个对象),它到底有啥顾忌。不知道新版unity有没有把这破事解决掉


【代码示例】

    随便定义了个可序列化类(也就是有[Serializable]修饰的类),并挂在Mono脚本上,
    然后在Inspec

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值