当前位置: 首页 > 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

相关文章:

  • 【JavaScript】为 setInterval()定义变量,存储ID
  • [JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决
  • Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍
  • 图论-代码随想录刷题记录[JAVA]
  • C++STL容器——map和set
  • Centos安装Elasticsearch教程
  • 【智路】智路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)
  • (批处理)设置延时+设置关机倒计时