Unity ScriptableObject简介

ScriptableObject就是可以Script的Object(废话)。这里的script不是指脚本,而是序列化(binary)的。
它的主要作用有三个:

  • 编辑模式下的数据持久化
  • 配置文件(配置游戏中的数据)
  • 数据复用(多个对象公用一套数据)

ScriptableObject的特点和用途:

  1. 数据共享与复用:多个脚本或组件可以引用同一个 ScriptableObject 实例,便于在整个项目中共享数据。
  2. 编辑器友好:可以在Unity编辑器内直接查看和编辑 ScriptableObject 的字段,便于非程序员调整数据。
  3. 版本控制友好:作为资产文件存在,易于团队协作和版本管理。
  4. 数据驱动设计:非常适合用来实现配置、预设、关卡数据、物品列表等不需要绑定到特定游戏对象的数据结构。

一个典型的ScriptableObject类

1
2
3
4
5
6
7
8
using UnityEngine; 
[CreateAssetMenu(fileName = "New MyData", menuName = "MyData/MyData")]
public class MyData : ScriptableObject
{
public string someString;
public int someInt;
// 可以添加更多公开字段或属性
}

使用

1
2
3
4
5
6
7
8
9
public class MyUser : MonoBehaviour
{
public MyData myDataReference;
void Start()
{
Debug.Log(myDataReference.someString);
Debug.Log(myDataReference.someInt);
}
}

静态函数

ScriptableObject.CreatInstance<\T>() 是Unity的一个静态方法,它的主要作用是动态地创建一个指定类型的ScriptableObject实例。这个方法对于在运行时根据需要创建数据容器、配置对象或预设非常有用。

消息函数

  • Awake
  • OnDestory
  • OnDisable
  • Onenable
  • Onvalidate Editor-only function that Unity calls when the script is loaded or a value changes in the Inspector.仅编辑器模式下当脚本加载或值改变时编辑器调用此函数
  • Reset

Unity ScriptableObject简介
https://newztx.github.io/2024/07/24/Unity ScriptableObject/
作者
Cranky Dove
发布于
2024年7月24日
许可协议