递归!序列化!错误!这个bug不简单,看着就感觉很牛皮。

报错信息:Recursive Serialization is not supported. You can’t dereference a PPtr while loading. (Constructors of C# classes may not load objects either. See stacktrace.)
总的来说就是:Unity不支持递归序列化

出现情况:
(一)有一个可序列化的类:Class1;在Class1中引用了Class1。例如:

[System.Serializable]
public class Class1
{//像List集合一样引用  造成递归序列化错误public List<Class1> c1List;//或是直接引用 也会造成这个错误//public Class1 c1;
}

(二)有一个可序列化的类:Class1;还有一个可序列化的类:Class2;在Class1中引用了Class2,而Class2中引又用了Class1。也会造成序列化错误。例如:

[System.Serializable]
public class Class1
{   //像List集合一样的引用Class2public List<Class2> c2List;//或是直接引用//public Class2 c2;
}
[System.Serializable]
public class Class2
{//像List集合一样的引用Class1public List<Class1> c1List;//或是直接引用//public Class1 c1;
}

像上面的两种情况,就造成了递归序列化,且最大的序列化深度为7,而Unity的序列化无法处理这种潜在的无限序列化数据,
Unity 2017之前,递归序列化也只是一个Warning,,
而在Unity2017之后就是Error了,而且在Unity编译器环境下,这个错误不会影响运行效果,但是当你打包时,就会出现并且打包失败,只能去解决。

解决方案:
(1)序列话最大的作用无非就是可以在编译器属性面板中观察或者改变其数值,你可以重写该部分代码已删除递归序列化的引用。
(2)将项目回滚到Unity2017之前的版本,在那时这只是一个警告,且不会影响打包。

PS:如果在 解决 这个问题时,项目中已经有了大量的序列话递归的情况了,这将花费大量的时间去寻找代码。而在Unity编译器的Console面板中,可以根据warning来快速定位到出现问题的地方。

递归序列化错误:Recursive Serialization is not supported. You can‘t dereference a PPtr while loading.相关推荐

  1. Json.net说法——(四)序列化错误处理

    序列化错误处理 json.net支持序列化和反序列化错误处理.错误处理可以捕捉错误并且可以选择处理错误且继续序列化或把从程序中错误抛出. 定义错误处理有两种方法:错误事件和错误修饰标签. (一)事件处 ...

  2. 使用RFECV、递归特征消除 (Recursive Feature Elimination)进行特征筛选详解及实战

    使用RFECV.递归特征消除 (Recursive Feature Elimination)进行特征筛选详解及实战 包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征. 所 ...

  3. spark出现task不能序列化错误的解决方法 org.apache.spark.SparkException: Task not serializable...

    import org.elasticsearch.cluster.routing.Murmur3HashFunction; import org.elasticsearch.common.math.M ...

  4. 8,协议序列化组件NewLife.Serialization

    <?xml:namespace prefix = o /> 在开发某些需要跟第三方平台交互的项目时,往往需要解析或者构造符合对方协议要求的数据格式,该操作在.Net中有个很漂亮的名字--序 ...

  5. Maven错误 diamond operator is not supported in -source 1.5 (use -source 7 or higher to enable diamond

    转自:https://www.cnblogs.com/EasonJim/p/6832049.html Maven错误 diamond operator is not supported in -sou ...

  6. Map集合 File类 递归 序列化 常用类 进程线程 死锁

    一.Map集合 将键映射到值得对象,键得值不能重复,一个键可以对应最少一个值. Map接口下的封装好得实现类 –|HashMap –|TreeMap 1.Map接口下的方法 增://将指定得值与该映射 ...

  7. spark出现task不能序列化错误的解决方法 org.apache.spark.SparkException: Task not serializable

    出现"task not serializable"这个错误,一般是因为在map.filter等的参数使用了外部的变量,但是这个变量不能序列化.特别是当引用了某个类(经常是当前类)的 ...

  8. mysql 单标递归_MySql8 WITH RECURSIVE递归查询父子集的方法

    背景 开发过程中遇到类似评论的功能是,需要时用查询所有评论的子集.不同数据库中实现方式也不同,本文使用Mysql数据库,版本为8.0 Oracle数据库中可使用START [Param] CONNEC ...

  9. java序列化错在哪里_Spark序列化错误:java.io.NotSerializableException

    由于spark算子用到的class没有实现序列化,报错如下所示 15/11/23 14:43:47 ERROR Executor: Exception in task 0.0 in stage 4.0 ...

最新文章

  1. SpringBoot第十三篇:springboot集成spring cache
  2. mysql主从配置流程
  3. git 推送本地分支到远程分支 git push origin
  4. git push前请先git pull
  5. 32位JDK和64位JDK
  6. Paxos共识算法详解
  7. 依赖注入的两种方式并附上例子
  8. python 拟合正态分布_如何在Python中拟合双高斯分布?
  9. Spring注解大全(更新中)
  10. How to make everyone is happy
  11. ASP.NET中IsPostBack属性研究
  12. java rxtx下载_1、下载64位rxtx for java 链接:http://fizzed.com/oss/rxtx-for-java2、下载下来的包解压后按照说明放到JAV...
  13. win7蓝屏0x0000003b解决教程
  14. CentOS导入CA证书
  15. 网络营销培训:如何进行H5活动宣传?
  16. 赵小楼《天道》《遥远的救世主》深度解析(116)论天国的女人
  17. 第3课 把文件存入Git文档库
  18. android浏览器400错误代码,console.log在谷歌浏览器和Android浏览器的本地代码错误...
  19. 数据结构之字符串插入操作
  20. php竞赛,PHP实现炸金花游戏比赛

热门文章

  1. PHP毕业设计源代码剧影评|剧评影评系统
  2. vue 项目 去哪儿
  3. 乳腺仿体breast phantom的MATLAB实现及探讨
  4. 高级语言及其语法描述
  5. 宽依赖和窄依赖_Spark宽依赖和窄依赖深度剖析
  6. 关于tp-link wr740 v4的刷机救砖的办法(非线刷解决)恢复原版的
  7. python27读书笔记0.1
  8. SPOJ694 SPOJ705 ——不同子串的总数
  9. Linux 驱动开发 四十四:platform 设备驱动实验(二)
  10. 资源下载--使用Proxy SwitchyOmega+postman下载资源