unity保存游戏对象到mysql_非常好用的游戏数据保存类:ScriptableObject

本文介绍了如何在Unity中使用ScriptableObject来保存和管理游戏数据。ScriptableObject可作为资源文件存储,便于策划修改数值,并通过Resources.Load进行读取。数据修改后会自动保存,提供了一种有效且灵活的游戏数据持久化方案。
摘要由CSDN通过智能技术生成

基础知识:

1、将数据储存资源文件中,像普通资源一样管理,退出也会保存修改

2、继承自UnityEngine.Object,不必附着在对象上也无需/不能赋给Gameobject或Prefab

3、可以被serialised,可以在资源面板创建一个Asset文件,把数据存储在资源文件中,通过属性面板可修改数值。

4、可以放到.asset文件中,因此可以自定义我们需要的资源类型

5、本身是个类,可以引用,在项目之间共享

6、回调少 :OnEnable 、OnDisable、OnDestroy

7、persistent:当它被绑定到.asset文件或者AssetBundle等资源文件中的时候(它可以通过Resources.UnloadUnusedAssets来被unload出内存。可以通过脚本引用或其他需要的时候被再次load到内存)

非persistent:通过CreateInstance<>来创建的时候(它可以通过GC被直接destroy掉(如果没有任何引用的话)。如果不想被GC的话,可以使用HideFlags.HideAndDontSave)

使用:1、创建一个类(既ScriptableObject类),继承自ScriptableObject即可

usingUnityEngine;//在资源面板右键Create,创建该类对应的Asset文件

[CreateAssetMenu(fileName = "GameDataAsset", menuName = "Creat GameData Asset")]public classGameData : ScriptableObject

[Header("测试_字符串")]public string testStr = "Test String";

[Space(10)]

[Header("测试_数组")]public int[] testArr;

2、在资源面板中创建Asset文件

右键 => Create => 创建ScriptableObject类对应的Asset文件

44988128d36cda06548ce54d2cd3ceed.png

3、就可以提供给策划填写/修改数值了

2d3bbaf6d23c5dd6bc4465f535a0581f.png

4、读取Asset文件,获取序列化的信息

在这里使用Resources加载的Asset文件,也可以通过AB加载等方式,或者直接序列化GameData 类都可。

加载到ScriptableObject类之后,就可以使用里面的属性

usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;public classGetGameData : MonoBehaviour

GameData gameData;voidStart ()

gameData= Resources.Load<GameData>("GameDataAsset");

Debug.Log(gameData.testStr);foreach (var item ingameData.testArr)

Debug.Log(item);

4、保存游戏数据(读取到Asset,修改属性,数据变化自动保存)

public classGetGameData : MonoBehaviour

GameData gameData;voidStart ()

gameData= Resources.Load<GameData>("GameDataAsset");

Debug.Log(gameData.testStr);

gameData.testStr= "Change Value";

Debug.Log(gameData.testStr);

参考文献:https://blog.csdn.net/candycat1992/article/details/52181814

https://unity3d.com/cn/learn/tutorials/modules/beginner/live-training-archive/scriptable-objects

http://gad.qq.com/article/detail/286720?ADTAG=gad.cx.wz

实用案例:

1、https://blog.csdn.net/LIQIANGEASTSUN/article/details/50510615

2、https://blog.csdn.net/IOTHua/article/details/79429266

后话:我不是程序员,我只是搬运工!老板不在乎你是不是项目怎么做出来的,是不是代码自创。他们只关心你是不是高效完成任务。以上内容摘抄自网络!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值