U4S2L1——ScriptableObject 数据文件的创建
U4S2L1——ScriptableObject 数据文件的创建
本章代码关键字
1 | ScriptableObject //数据配置存储基类,自定义的数据资源文件需要继承它 |
ScriptableObject数据文件的创建
创建ScriptableObject
数据类非常简单
- 继承
ScriptableObject
- 声明需要的数据变量
- 添加对应的特性,让我们可以在Unity中真正的创建出数据资源文件
自定义ScriptableObject数据容器
- 继承
ScriptableObject
类 - 在该类中声明成员(变量、方法等)
我们可以声明任何类型的成员变量
但是需要注意:如果希望之后在Inspector窗口中能够编辑它,那你在这里声明的变量规则要和MonoBehavior当中public变量的规则是一样的
1 | using UnityEngine; |
注意:声明后,我们便可以在Inspector窗口中看到变化
我们可以在其中进行设置,但是这些设置都是默认数据,并没有真正使用他们
这些关联信息都是通过脚本文件对应的Unity配置文件.meta进行记录的
目前该数据只是一个数据容器模板,有了它我们之后才能根据它的信息创建对应的数据资源文件
根据自定义的ScriptableObject数据容器创建数据文件
注意:
该创建功能,其实就是根据自定义数据容器类创建了一个配置文件
该文件中记录了对应的数据容器类信息,以及其中变量关联的信息,
之后我们在使用它时,本质上也是通过反射创建对象进行使用
具体的方法有两种:
-
为类添加
[CreateAssetMenu()]
通过菜单创建资源特性1
2
3[
]示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17using UnityEngine;
using UnityEngine.Video;
[
]
public class MyData : ScriptableObject
{
public int i;
public float f;
public bool b;
public GameObject obj;
public Material material;
public AudioClip audioClip;
public VideoClip videoClip;
}
点击后就会自动创建数据文件,它基于之前编辑的
MyData
脚本
-
利用ScriptableObject的静态方法创建数据对象,然后将数据对象保存在工程目录下
该方法会用到特性MenuItem(),和一部分编辑器的知识
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18using UnityEditor;
using UnityEngine;
public class ScriptableObjectTool
{
[ ]
public static void CreateMyData()
{
//书写创建数据资源文件的代码
MyData asset = ScriptableObject.CreateInstance<MyData>();
//通过编辑器API 根据数据创建一个数据资源文件
AssetDatabase.CreateAsset(asset, "Assets/Resources/MyDataTest.asset");
//保存创建的资源
AssetDatabase.SaveAssets();
//刷新界面
AssetDatabase.Refresh();
}
}以上代码就会在工具栏生成对应的选项,点击后生成配置文件,不同的配置文件数据不互通
ScriptableObject好处的体现
- 更方便的配置数据,我们可以直接在Inspector当中配置数据
- 项目之间的复用,我们可以拷贝继承ScriptableObject的脚本到任何工程中
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!