U4S2SL1——配置数据

ScriptableObject数据文件为什么非常适合用来做配置文件?

  1. 配置文件的数据在游戏发布之前定规则
  2. 配置文件的数据在游戏运行时只会读出来使用,不会改变内容
  3. 在Unity的Inspector窗口进行配置更加的方便

只用不改,并且经常会进行配置的数据,非常适合使用ScriptableObject

我们可以利用ScriptableObject数据文件,来制作编辑器相关功能
比如:Unity内置的技能编辑器、关卡编辑器等等
我们不需要把编辑器生成的数据生成别的数据文件,而是直接通过ScriptableObject进行存储,
因为内置编辑器只会在编辑模式下运行,编辑模式下ScriptableObject具备数据持久化的特性

举例制作

以前我们的常规配置方式,都是利用之前学习过的数据持久化四部曲当中的内容进行配置的
比如 xml配置 json配置 excel配置

但是他们往往是不需要修改的内容,因此这些数据也可以使用ScriptableObject数据文件来做配置文件

RoleInfo.cs

值得注意的是,想要让自定义类在Inspector窗口上显示需要加上[System.Serializable]​特性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(fileName = "RoleInfo", menuName = "ScriptableObject/角色信息")]
public class RoleInfo : ScriptableObject
{
[System.Serializable]
public class RoleData
{
public int id;
public string res;
public int atk;
public string tips;
public int lockMoney;
public int type;
public string hitEff;
}

public List<RoleData> data;
}

再生成文件,并进行文件的配置

image

之后就可以关联配置文件并使用它们

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using UnityEngine;

public class Lesson5 : MonoBehaviour
{
public RoleInfo info;

void Start()
{
for (int i = 0; i < info.data.Count; i++)
{
info.data[i].Print();
}
}
}