【Unity】【Odin Inspector】关于AOT Generation_odininspector下载-程序员宅基地

技术标签: Unity  插件  unity3d  Odin Inspector  游戏开发  

首先: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,用于多平台的支持。

 

之后你打包和在其他平台上就没有问题了~

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cyf649669121/article/details/111795715

智能推荐

编码规范_源代码 编码规范 调研表-程序员宅基地

文章浏览阅读924次。1.4.B 编码规范——如何写出简洁优美的代码 下面是来自两位C语言程序员的实现相同功能的两段代码: l 月薪1000元的程序员的代码: #include int main() { FILE *Wenjian; char Str[100]; Wenjian = fopen("test.txt","w"); do_源代码 编码规范 调研表

xcrun simctl_xcrun simctl list 不显示device-程序员宅基地

文章浏览阅读665次。当我们执行xcrun simctl --help的时候,命令行显示xcrun simctl 的帮助信息,如下面内容,代码我们仔细分析学习一下使用方式:usage: simctl [--set <path>] [--profiles <path>] <subcommand> ...**用处:**通过命令行来操作模拟器,simctl提供很多子命令,让我们根据自己的需要随机选择,但是使用子命令的时候需要指定设备,也就是在在子命令后面追加 参数,参数不同代表执行的模拟器不_xcrun simctl list 不显示device

golang——随机数(math/rand包与crypto/rand包)-程序员宅基地

文章浏览阅读1.5k次。1、math/rand 包1.1、math/rand 包实现了伪随机数生成器1.2、主要方法(1)func Seed(seed int64)设置随机种子,不设置则默认Seed(1)(2)func Int() int返回一个非负的伪随机int值(3)func Int31() int32返回一个int32类型的非负的31位伪随机数(4)func Int63() in..._use of weak random number generator (math/rand instead of crypto/rand)

微信支付-redirect uri域名与后配置不一致10003【域名配置一致情况下问题排查】_redirect_uri 域名与后配置不一致,错误码10003-程序员宅基地

文章浏览阅读8.6k次。微信支付-redirect uri域名与后配置不一致10003【域名配置一致情况下问题排查】_redirect_uri 域名与后配置不一致,错误码10003

Linux | 人生苦短,我用Vim【最受欢迎的编辑器】_人生苦短我用vim-程序员宅基地

文章浏览阅读9.8k次,点赞118次,收藏178次。一探程序员眼中的文本代码顶级编辑器Vim的使用和操作,各种模式与命令集,让你感受Vim的强大_人生苦短我用vim

Linux Mint 19.1建立热点方法_mintlinux开启热点-程序员宅基地

文章浏览阅读1.2k次。Linux Mint 19.1建立热点方法首先点击桌面右下角的网络按钮,选择网络设置。在右侧的Wi-Fi参数下,点击用作热点点击开启按钮这时可以看到热点已经建立好了,这都是Linux Mint事先已经为我们预置好了wifi热点一系列参数的结果。打开网络连接可以看到,wifi下多了一个名为Hotspot的网络用这种方法建立出来的热点有一个缺陷,就是wifi名只能是你建立系统时创建的计算机..._mintlinux开启热点

随便推点

(二)Go Makes Things Simple_matlab出现file format not recognized collect2.exe: e-程序员宅基地

文章浏览阅读351次。GO web_matlab出现file format not recognized collect2.exe: error: ld returned 1 exit status

连接显示器与计算机主机的接口电路是,液晶显示器VGA模拟输入接口电路-程序员宅基地

文章浏览阅读1.5k次。VGA模拟输入接口电路的工作过程如下:由显示器VGA接口1、2、3脚接收到的R、G、B信号,经双向二极管D12、D11、D10限幅,R31、R30、R29三个电阻进行阻抗匹配,由C7、C10、C14耦合到主控芯片U4(CM5 126)进行A/D转换等处理(该机A/D转换电路集成在主控芯片中)。由显示器VGA接口13脚接收到的行同步信号(HSYNC),经稳压管ZD9(5.6V)限幅,送到反相器U3(..._显示器 vga接口电路图

【机器学习】KNN算法实战项目二:水果分类_knn算法 库尔勒香梨-程序员宅基地

文章浏览阅读1.2w次,点赞14次,收藏242次。KNN算法实战项目二:水果分类2 KNN实现水果分类2.1 模块导入与数据加载2.2 数据EDA2.3 模型创建与应用2.4 绘制决策边界手动反爬虫:原博地址 https://blog.csdn.net/lys_828/article/details/122615360 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息2 KNN实现水果分类第一个实战项目中的分类效果很明显, 使用KNN算法的分类结果也不错,第二个例子中的数据分类效果就比_knn算法 库尔勒香梨

Nginux-程序员宅基地

文章浏览阅读764次。关于Nginux一款高性能,轻量级WEB服务软件,稳定性高,系统资源消耗低,对HTTP并发连接的处理能力高(单台物理服务器可支持3000~50000个并发请求)Nginux编译安装yum -y install pcre-devel zlib-devel创建运行用户,组..._nginux

安装PyTorch-GPU版本+CUDA+CUDNN+Win10(显卡GeForce MX450)+Anaconda(最新版)_geforce mx450对应cuda-程序员宅基地

文章浏览阅读1.4w次,点赞19次,收藏97次。目录安装Pytorch-GPU版本1.检查电脑是否有显卡2.选择cuda的版本3.选择对应的cudnn的版本4.安装pytorch安装Pytorch-GPU版本系统:Win10环境:Anaconda显卡:GeForce MX4501.检查电脑是否有显卡在右下角wins下—右键—打开设备管理器—选择显示适配器如果存在NVIDIA XXX就可以安装GPU版本的PyTorch、Tensorflow。2.选择cuda的版本去cuda官网.._geforce mx450对应cuda

Java反射为实体类字段赋值_java用反射给实体类赋值-程序员宅基地

Java反射可以通过获取类的字段信息,设置字段可访问并赋值。