ScriptableObject是什么
这是官方的描述:
ScriptableObject 是一个可独立于类实例来保存大量数据的数据容器。ScriptableObjects 的一个主要用例是通过避免重复值来减少项目的内存使用量。如果项目有一个预制体附加的 MonoBehaviour 脚本中存储不变的数据,这将非常有用。每次实例化预制件时,都会产生单独的数据副本。这种情况下可以不使用该方法并且不存储重复数据,而是使用 ScriptableObject 来存储数据,然后通过所有预制件的引用访问数据。这意味着内存中只有一个数据副本。
个人理解就是用来保存数据的,是保存在项目内的,可以减少内存使用量。
ScriptableObject怎么用
脚本要继承ScriptableObject,并且需要添加创建ScriptableObject的按钮。
如下
[CreateAssetMenu(fileName = "ScriptableObjectTestTest",menuName = "CreatTest/ScriptableObjectTestTest")]
public class ScriptableObjectTest : ScriptableObject
{
}
这样,在面板上就可以看到了
我们在这个里面存点数据
using UnityEngine;
[CreateAssetMenu(fileName = "ScriptableObjectTestTest",menuName = "CreatTest/ScriptableObjectTestTest")]
public class ScriptableObjectTest : ScriptableObject
{
[Header("姓名")]
public string names;
[Header("年龄")]
public int age;
}
可以在界面上看到对应的数据
我们给他赋值,来用下
编写调用的脚本,并挂在到场景中
using UnityEngine;
public class UseScriptableObject : MonoBehaviour
{
public ScriptableObjectTest scriptableObjectTest;
void Start()
{
Debug.Log(scriptableObjectTest.names+"--"+scriptableObjectTest.age);
}
}
运行,看下结果
没有问题。