备忘:

1. ScriptableOjbect中,由于Serialization的原因,不能使用基类引用来存储子类对象,这样都会导致数据丢失

2. 无法直接对Unity的数据如,vector3, quaternion等使用BinaryFormatter进行序列化,会报“SerializationException: Type UnityEngine.Vector3 is not marked as Serializable”。要绕过这个问题的姿势是,自己对Vector3进行包装。下面是其中一种方法

 using System;
using System.Runtime.Serialization;
using UnityEngine; namespace Assets.Editor
{
sealed class Vector3SerializationSurrogate : ISerializationSurrogate
{ public void GetObjectData(object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
{
Vector3 v3 = (Vector3)obj;
info.AddValue("x", v3.x);
info.AddValue("y", v3.y);
info.AddValue("z", v3.z);
} public object SetObjectData(object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.ISurrogateSelector selector)
{
Vector3 v3 = (Vector3)obj;
v3.x = (float)info.GetValue("x", typeof(float));
v3.y = (float)info.GetValue("y", typeof(float));
v3.z = (float)info.GetValue("z", typeof(float)); return (object)v3;
}
}
}
 public static void TestFunc()
{
BinaryFormatter bf = new BinaryFormatter();
SurrogateSelector ss = new SurrogateSelector(); Vector3SerializationSurrogate v3Surrogate = new Vector3SerializationSurrogate();
ss.AddSurrogate(typeof(Vector3), new StreamingContext(StreamingContextStates.All), v3Surrogate); bf.SurrogateSelector = ss; MemoryStream stream = new MemoryStream(); Vector3 testObj = new Vector3(, , );
bf.Serialize(stream, testObj);
stream.Position = ;
Vector3 resultObj = (Vector3)bf.Deserialize(stream);
Debug.Log(resultObj);
}

最新文章

  1. bzoj-4517 4517: [Sdoi2016]排列计数(组合数学)
  2. libevent
  3. Apache Internal Server Error
  4. spring mvc 和junit 4集成的注意点
  5. Jquery插件easyUi表单验证提交
  6. POI读取excel
  7. Sublime Text3使用及常用插件
  8. ceph启动脚本
  9. 算法之旅,直奔<algorithm>之十五 find
  10. (step5.1.3)hdu 1213( How Many Tables——1213)
  11. H5 拖放
  12. 查询优化--小表驱动大表(In,Exists区别)
  13. Codeforces976E Well played! 【贪心】
  14. Spark Worker启动Driver和Executor工作流程
  15. WinCHM 制作开发知识库,So easy!!!
  16. hdu 1576 A/B 【扩展欧几里德】
  17. MongoDB 安装和使用问题总结
  18. Linux 系统磁盘挂载信息文件
  19. python中list和str互转
  20. js中with 用法

热门文章

  1. 数列求和 Exercise06_13
  2. 【读书笔记】Elasticsearch集成Hadoop最佳实践
  3. IIS8集成模式下打开静态资源被aspx处理程序处理,StaticFileModule失效问题分析
  4. JS面向对象之原型
  5. Cobbler安装CentOS 7网卡命名修改
  6. centos搭建git服务器(转)
  7. EasyUI-DataGrid动态合并单元格
  8. 利用JS实现vue中的双向绑定
  9. 虚拟机主流软件Vmware安装
  10. vuex介绍