【Unity】【Odin Inspector】关于AOT Generation
首先:Odin是一个绝对需要用的插件(稳赚不赔)
但是Odin Inspector在手机上可能会有些问题:
例如字典,大家都知道,Unity本身是不支持字典的序列化的,但是Odin Inspector支持。当然,还会有很多数据结构是Odin可以支持、序列化、反序列化,但是并不是Unity默认的类型。在多平台上可能会报如下的错误:
ExecutionEngineException:Attemting to call method " Sirenix.Serialization.ListForMatter'1 …… “ for which no ahead of time (AOT) code was generated . System.Reflection.MonoCMthod.InternalInvoke ……
这种情况是因为手机上不支持此序列化,你也可以理解为Unity没有原生支持此序列化。
一般这种情况法正在我们自定义的类、结构体中。
这种情况下可以分两步进行处理:
第一是在报错的类中增加一个属性:[System.Serializable] 。
如果加了这个还不不能解决问题(我遇到是字典不能反序列化的问题),那么需要使用Odin Inspector 的AOT Generation :
关于Odin Inspector 的 AOT Generation
通过以下路径:Tools→Odin Inspector → Preferences → AOT Generation 可以看到AOT面板。
至于AOT Generation , 官方文档: https://odininspector.com/tutorials/serialize-anything/aot-serialization 。 他的操作是生成一个DLL 文件来支持各个平台的序列化,解决诸如上述的问题。
打开这个面板之后,你需要先Scan Project ,这个操作需要等一会,之后就可以看到需要加入到AOT的一些数据结构了。如下图:
但是要注意的是:
你可以发现有很多类没有必要放在这个AOT里面,例如GameObject,这个本来Unity就支持在不同平台的序列化。
其次,你不能所有的东西都放在这个列表里面,因为可能会造成打不出包的问题,尤其是在IL2CPP的情况下:
IL2CPP error for method 'System.Void Sirenix.Serialization.AOTGenerated.PreventCodeStrippingViaReferences::.cctor()' in assembly 'D:\Work\Main_KWar\Temp\StagingArea\assets\bin\Data\Managed\Sirenix.Serialization.AOTGenerated.dll'
Additional information: ���õ�Ŀ�귢�����쳣��
(这个乱码也是离谱)
出现这种打包错误,你可以理解为你加到AOT Generation中的某些类不兼容之类。所以最好的方法就是,根据在真机上的报错,仅添加你所需要的类型。在我的项目只需要以下几个:
其他的都删掉,然后切记不要勾选 Automate Before Builds,因为如果勾选的话,会在打包之前自动重新扫描、生成一遍Dll文件,等于你就白设置了。
注意:这个列表的里的东西不能引用Unity.Editor里面的东西,这样也会导致生成出错!
类似:SerializationException: Unable to find assembly 'UnityEditor.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
这个可以单击列表里的文本,然后就可以看到详细的类型信息,看哪些是引用了Unity.Editor把他删掉即可。
然后点 Generate DLL , Odin 会自动生成一个DLL,用于多平台的支持。
之后你打包和在其他平台上就没有问题了~
【Unity】【Odin Inspector】关于AOT Generation相关推荐
- 革命性Unity 编辑器扩展工具 --- Odin Inspector 系列教程
前言:Odin Inspector是Unity的一个插件,让您可以享受拥有强大,自定义和用户友好编辑器的所有工作流程优势,而无需编写任何自定义编辑器代码. Odin包含许多功能,例如Static In ...
- Odin Inspector 系列教程 --- Odin Static Inspector 使用
Odin Static Inspector,一个快速搜索并允许调用相应的静态成员的便捷工具,提高测试效率. 使用起来非常方便,只需要打开Tools/Odin Inspector/Static Insp ...
- Odin Inspector 系列教程 --- SearchableAttribute
通过添加SearchableAttribute特性为其添加一个搜索框,可用于搜索对应的类或其子类的成员,但目前不可用于字典类型. image using Sirenix.OdinInspector; ...
- Odin Inspector 系列教程 --- 初识 OdinWindow
笔者以往在使用一些插件的时候经常会看上面这种多炫酷的插件操作界面,常常羡慕不已,如今有了Odin,自己也可以简简单单的实现这些炫酷的效果了,下面笔者就带大家初识OdinWindow. 创建一个Wind ...
- Unity的Inspector
1.Inspector显示的可编辑内容就是脚本的成员变量 在上图的Inspector窗口里直接编辑脚本中类的字段,运行时软件自动将在窗口中编辑的属性赋给类中的字段 (1)私有和保护类型的变量无法显示编 ...
- 【Unity】讲解如何在Unity的Inspector面板中用滑动条来控制变量的大小
首先,我们现在的需求是这样的,我定义了一个脚本,里面有一个int类型的变量,但是我想控制变量的大小在0到100之间,通过用滑动条的方式来控制. 其实这里的player HP 是我使用了unity自带的 ...
- enum中使用中文 unity_自定义Unity材质Inspector之枚举类型(Enum)
我也忘了转自哪里,抱歉,感谢原作者 最近发现Unity的一个黑科技(其实很久以前就发现了,只是方便开头而已,哈哈):可以自定义材质的检视面板,通过这个功能还可以把功能差不多的着色器合并成一个. 例如有 ...
- 【unity】Inspector视图中的get/set使用(四)
http://www.xuanyusong.com/archives/3406 get set 使用起来很方便,但是编辑时在Inspector视图中问题就来了,因为get/set的属性即使是publi ...
- 【Unity】Inspector属性
Attribute(属性)的作用直接体现在Inspector窗口中,通过使用Attribute,可以对Inspector窗口的内容进行灵活展现和管理,相当于一个辅助工具. RequireCompone ...
- Unity编辑器Inspector界面中cs脚本文件乱码问题
既往经验通常都会在模版文件夹Editor\Data\Resources\ScriptTemplates下修改模版文件的编码格式为utf-8编码. 但是使用vs编辑代码写入中文保存后,文件编码格式变成A ...
最新文章
- 如何让自己时刻冷静的方法_4个方法,教你如何真正爱自己
- java whois_Java如何实现简单的whois查询
- linux memcached php 整合
- matlab中textread 函数
- Linux SVN搭建模式
- 深入理解Spark 2.1 Core (八):Standalone模式容错及HA的原理与源码分析
- Spark Mllib里的如何对两组数据用斯皮尔曼计算相关系数
- 牛客题霸 [最大数] C++题解/答案
- “我觉得,这个项目只需要 2 个小时”
- 好的安排小明(南阳19)(DFS)
- Veritas Backup Exec 21.3 Multilingual (Windows)
- 斐讯k2路由虚拟服务器,斐讯K2P不死uboot分享带dhcp server功能
- 游戏开发项目管理那些事
- STM32开发 --- W25Q128读写、SPI通信
- mac误删文件恢复可靠教程
- java.lang.UnsupportedOperationException与CleanMyMac X
- html 文字竖排效果
- MGMT接口采集服务器IMM日志
- 16、OSPF配置实验之LSDB过载保护
- ssh登陆报错“IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!“问题原因及解决方法