ScriptableObject 序列化游戏数据

本文介绍了一种使用ScriptableObject来管理游戏数据的方法,避免了直接在Scene文件中序列化数据导致的版本冲突问题。通过创建Asset文件,数据可以独立存储并方便地在属性面板中调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

游戏中经常会有一些需要序列化的数据,通常的做法就是把这些数据 [SerializeField],然后在视图面板中修改数值,这样不需要修改脚本,就可以进行数据调整,方便策划大大修改数值。
不过这样做还有一个缺点,因为序列化的数据都保存在Scene场景内,没修改一次数值,场景文件(Scene.unity)都会随之变动,多人合作时,场景文件就很容易发生冲突。在这里就给大家简单介绍一下利用ScriptableObject 来进行序列化,它可以在资源面板创建一个Asset文件,把数据存储在资源文件中,通过属性面板可修改数值。

using UnityEngine;
//在资源面板右键Create,创建该类对应的Asset文件
[CreateAssetMenu(fileName = "GameDataAsset", menuName = "Creat GameData Asset")]
public class GameData : ScriptableObject
{
    [Header("测试_字符串")]
    public string testStr = "Test String";
    [Space(10)]
    [Header("测试_数组")]
    public int[] testArr;
}

在类中定义需要序列化的属性,这样就可以啦,是不是很简单~

2.在资源面板中创建Asset文件
右键 => Create => 创建ScriptableObject类对应的Asset文件

3.填写/修改数值

4.读取

T setting = AssetDatabase.LoadAssetAtPath(assetPath, typeof(T)) as T;

可以使用其他API读取加载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值