当前位置: 首页 > article >正文

【Unity实战】SO反序列化正确姿势

此篇博文算是【C#实战】Newtonsoft.Json基类子类解析_newtonsoft.json不能转化子类-CSDN博客的一个补充,因为我发现ScriptableObject并不是传统的new()就能解决的问题。

SomeClass must be instantiated using the ScriptableObject.CreateInstance method instead of new SomeClass.

很明显,Unity不推荐使用new来弄一个实例。

前后对比如下:

// Before
private T GetItem<T>(JObject obj)
{
	return obj.ToObject<T>();
}

// After
private Item GetItem(JObject obj)
{
	Item item = ScriptableObject.CreateInstance<Item>();
	JsonUtility.FromJsonOverwrite(obj.ToString(), item);
	return item;
}

这里使用了JsonUtility,这是Unity自带的Json序列化、反序列化库,对SO有特殊的处理。如果之前用的是Newtonsoft,可以写个自定义的JsonConverter,然后用JsonUtility去覆盖新建出来的SO实例。

有同志问为什么不用之前的泛型而是指定具体的类型,主要是CreateInstance不能和泛型使用,编译不会通过,看似没有泛型相关的实现。

So emm,如果读者有泛型的实现方法,欢迎评论区留言,感激不尽。


http://www.kler.cn/a/306101.html

相关文章:

  • 下载运行Vue开源项目vue-pure-admin
  • 利用Gurobi追溯模型不可行原因的四种方案及详细案例
  • python round四舍五入和decimal库精确四舍五入
  • 汽车IVI中控开发入门及进阶(46):FFmpeg
  • 3D架构图软件 iCraft Editor 正式发布 @icraftplayer-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
  • 问题解决:发现Excel中的部分内容有问题。是否让我们尽量尝试恢复? 如果您信任此工作簿的源,请单击“是”。
  • 【智路】智路OS Airos Edge 2.0 Quick Start
  • 利用 FastAPI 和 Jinja2 模板引擎快速构建 Web 应用
  • 通过logstash同步elasticsearch数据
  • 【资料分析】常见的坑
  • 文件外发怎么保证安全
  • sqli-labs靶场自动化利用工具——第1关
  • 在Coontroller层中我们经常使用的@RequestParam, @PathVariable, @RequestBody ,区别以及各自的使用场景
  • golang实现从服务器下载文件到本地指定目录
  • 简单接口自动化框架实现(Python+requests+pytest)
  • _Array类,类似于Vector,其实就是_string
  • 编写程序模版的搭建
  • Android Kotlin 中的 `groupBy` 方法详解
  • 手机玩机常识____展讯芯片刷机平台ResearchDownload的一些基本常识与问题解决
  • 基于CosyVoice的多语言语音合成技术解析
  • STM32(十三):通信协议——USART串口协议
  • React源码学习(一):如何学习React源码
  • Python学习——【1.2】数据类型、数据类型转换
  • yjs04——matplotlib的使用(多个坐标图)
  • Java网络编程 TCP通信(Socket 与 ServerSocket)
  • (批处理)设置延时+设置关机倒计时