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

Unity ScriptableObject持久化操作

本文仅作笔记学习和分享,不用做任何商业用途

本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正

Unity (编辑器)数据持久化 之 ScriptableObject初识与创建-CSDN博客

通过上一篇文章的学习可以知:[CreateAssetMenu(fileName ="文件名" ,menuName ="菜单名",order =0)]这个特性可以基于脚本创建一个表,然后自己提前填写,也就是静态数据

但是如果我想要使用代码实时控制表格中的内容,从而动态配表呢?就可以用到CreateInstance这个方法

1.CreateInstance方法的非持久化特点

首先,我有一个继承ScriptableObject的脚本,里面有三个变量和一个打印方法

[CreateAssetMenu(fileName ="文件名" ,menuName ="菜单名",order =0)]
public class LearnScripttableObject : ScriptableObject
{
    public int a;
    public string b;
    [SerializeField]
    private GameObject c;
    public void printinfo()
    {
        Debug.Log(a);
        Debug.Log(b);
        Debug.Log(c);
    }
}

CreateInstance这个静态方法(其作用为创建一个 LearnScripttableObject 类型的实例)

 dates = ScriptableObject.CreateInstance<LearnScripttableObject>();
    

修改演示: 

   private void Awake()
   { 
   dates = ScriptableObject.CreateInstance<LearnScripttableObject>();
       dates.a = 10;
       dates.b = "任意字符串";
       dates.printinfo();
   }

 

 

这并不适合我们保存数据的目的,但是因其可以写作代码,所以配合数据持久化知识点更加方便

2.转JSON存取

Unity数据持久化 之 Json序列化与反序列化_unity json 反序列化-CSDN博客

Unity数据持久化 之 LitJson序列化与反序列化_unity litjson-CSDN博客

这里以Utility作演示

public class ScritableObjectPersistence :MonoBehaviour
{
    LearnScripttableObject dates;

    private void Awake()
    { 
    dates = ScriptableObject.CreateInstance<LearnScripttableObject>();
        dates.a = 10;
        dates.b = "任意字符串";
        dates.printinfo();
        string str =JsonUtility.ToJson(dates);
        File.WriteAllText(Application.persistentDataPath+"text.json",str);
        print(Application.persistentDataPath);
    }   
}

取(override原有的数据)

    string newstr = File.ReadAllText(Application.persistentDataPath + "text.json");
    JsonUtility.FromJsonOverwrite(newstr, dates);

 


http://www.kler.cn/news/289385.html

相关文章:

  • 装饰器模式及应用【理论+代码】
  • 弱通联条件下的人机混合控制
  • 蓝桥杯备赛day02:递推
  • 【Linux操作系统】:Linux生产者消费者模型
  • 数据分析-MAC 编程环境安装教程
  • 淘客APP的前后端分离架构设计
  • 学习记录——day42 多态
  • 算法图解(2)
  • 【Day08】
  • weak_ptr是否有计数方式,在哪分配的空间。
  • MacBook Pro M3 安装 Node.js v14 的兼容性
  • 进阶SpringBoot之 Shiro(6)整合 Thymeleaf
  • 【word导出带图片】使用docxtemplater导出word,通知书形式的word
  • 0基础学习爬虫系列:Python环境搭建
  • Anaconda的环境管理操作命令详解-学习篇
  • mysql创建数据库和表
  • list的简单实现
  • springblade-JWT认证缺陷漏洞CVE-2021-44910
  • 4.1 数据分析-excel 基本操作
  • Java语言程序设计基础篇_编程练习题**17.21 (十六进制编辑器)
  • LinkedList与链表
  • Java基于微信小程序的实习管理系统
  • C++ 设计模式——中介者模式
  • Django 安装指南
  • notepad++软件介绍(含安装包)
  • 力扣56-合并区间(Java详细题解)
  • Electron 项目实战 02:打包和自动更新
  • Linux下的VLC简介
  • 语言桥梁:探索全球最受欢迎的翻译工具,让理解更简单
  • MySQL复习3