开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:609

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

查看: 278|回复: 0

[自学总结] unity中自定义工具编辑用ScriptObject生成.asset文件存储资源时出现的坑

[复制链接]  [移动端链接]
6蛮牛粉丝
1252/1500
排名
996
昨日变化
1

9

主题

147

帖子

1252

积分

Rank: 6Rank: 6Rank: 6

UID
17055
好友
0
蛮牛币
1907
威望
0
注册时间
2014-3-10
在线时间
282 小时
最后登录
2017-4-29
发表于 2017-1-10 12:44:16 | 显示全部楼层 |阅读模式

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

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

x
最近写FSM,然后写了个工具用来编辑FSM中各个state类的数据,接着把编辑后的数据用ScriptObject生成.asset文件来存储,然后坑就来了,总结一下,有大神能有更好的解决方法,要不吝赐教呀。

1:.asset文件是无法存储属性的。一开始我用了成员变量,后来改成属性了(手贱呀,虽然有原因),结果变成数据不能存储,一万只草泥马奔腾而过呀,这之前怎么可以,现在怎么又不可以了呀........(为什么要说‘又’),因为中间也改动了一些代码,并没有马上意识到属性问题,很无语有木有。


2:抽象类是无法存储的,.asset文件会自动设为null。如我当时要存储各个state类编辑后要用到的方法,我是通过反编译和Attribute类得到各个state类的MethodInfo,然后用Delegate.CreateDelegate创建自定义的delegate存储下来,结果发现这个Delegate.CreateDelegate要和生成的对象挂钩(大家可以来说说你们的想法),我只能退而求其次,那我可以存储MethodInfo呀,等我游戏运行初始化FSM的state对象挂钩生成delegate,那么问题又来了,刷新的时候.asset文件会把MethodInfo变量自动设置成null,我去,又一万只草泥马奔腾而过呀........


3:变量是什么类型,.asset文件存储的就是什么类型,坑就在派生类中。如我要存储个List<父类类型T> list,按理说这个泛型我可以list.add(子类)的,结果,.asset文件存储时会自动把list中所有对象自动转换成父类。 ps:有没有同学有好的办法解决呀,求教各位呀


编辑器存储数据记得最后使用SetDirty。

重点:若要看有没有真正存储到.asset文件中(unity中看到的有可能是个假象,我就被蒙了好久,明明创建出来了,为什么重启或者刷新unity就又没了,一万只草泥马奔腾而过呀........),
可以把.asset文件用记事本打开,查看文件记录的数据有没有你想要存储的数据,没有的话,就是真没有,就算是在unity看到有都没有个卵用,个卵用,卵用,用.........
[发帖际遇]: veiga 在网吧通宵,花了 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

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

本版积分规则

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