Unity-基础-ScriptableObject
  v5bEezpf7PPs 2023年11月02日 39 0

ScriptableObject是什么

这是官方的描述:

ScriptableObject 是一个可独立于类实例来保存大量数据的数据容器。ScriptableObjects 的一个主要用例是通过避免重复值来减少项目的内存使用量。如果项目有一个预制体附加的 MonoBehaviour 脚本中存储不变的数据,这将非常有用。每次实例化预制件时,都会产生单独的数据副本。这种情况下可以不使用该方法并且不存储重复数据,而是使用 ScriptableObject 来存储数据,然后通过所有预制件的引用访问数据。这意味着内存中只有一个数据副本。

个人理解就是用来保存数据的,是保存在项目内的,可以减少内存使用量。

ScriptableObject怎么用

脚本要继承ScriptableObject,并且需要添加创建ScriptableObject的按钮。

如下

[CreateAssetMenu(fileName = "ScriptableObjectTestTest",menuName = "CreatTest/ScriptableObjectTestTest")]
public class ScriptableObjectTest : ScriptableObject
{ 
}

这样,在面板上就可以看到了

Unity-基础-ScriptableObject_C#

我们在这个里面存点数据

using UnityEngine;
[CreateAssetMenu(fileName = "ScriptableObjectTestTest",menuName = "CreatTest/ScriptableObjectTestTest")]
public class ScriptableObjectTest : ScriptableObject
{
   [Header("姓名")]
   public string names;
   [Header("年龄")]
   public int age;
}

可以在界面上看到对应的数据

Unity-基础-ScriptableObject_unity_02

我们给他赋值,来用下

Unity-基础-ScriptableObject_数据存储_03

编写调用的脚本,并挂在到场景中

using UnityEngine;

public class UseScriptableObject : MonoBehaviour
{
    public ScriptableObjectTest scriptableObjectTest;
    void Start()
    {
        Debug.Log(scriptableObjectTest.names+"--"+scriptableObjectTest.age);
    }
}

运行,看下结果

Unity-基础-ScriptableObject_ScriptableObject_04

没有问题。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs