用于存储编辑器状态的泛型类。
ScriptableSingleton 泛型类允许您在 Unity 编辑器中创建“管理器”类型的类。在从 ScriptableSingleton 派生的类中,您添加的可序列化数据将在编辑器中保存程序集重新加载。此外,如果该类使用 FilePathAttribute,可序列化数据将在 Unity 会话之间持久保存。
using System.Collections.Generic; using UnityEditor; using UnityEngine;
[FilePath("SomeSubFolder/StateFile.foo", FilePathAttribute.Location.PreferencesFolder)] public class MySingleton : ScriptableSingleton<MySingleton> { [SerializeField] float m_Number = 42;
[SerializeField] List<string> m_Strings = new List<string>();
public void Modify() { m_Number *= 2; m_Strings.Add("Foo" + m_Number);
Save(true); Debug.Log("Saved to: " + GetFilePath()); }
public void Log() { Debug.Log("MySingleton state: " + JsonUtility.ToJson(this, true)); } }
static class MySingletonMenuItems { [MenuItem("SingletonTest/Log")] static void LogMySingletonState() { MySingleton.instance.Log(); }
[MenuItem("SingletonTest/Modify")] static void ModifyMySingletonState() { MySingleton.instance.Modify(); } }
instance | 获取单例的实例。当第一次访问此属性时,Unity 会创建单例实例。如果您使用 FilePathAttribute,则 Unity 也将在第一次访问时加载数据。 |
Save | 保存 ScriptableSingleton 的当前状态。 |
GetFilePath | 获取保存此 ScriptableSingleton 的文件路径。 |
GetInstanceID | 获取对象的实例 ID。 |
ToString | 返回对象的名称。 |
Destroy | 删除一个游戏对象、组件或资源。 |
DestroyImmediate | 立即销毁对象 obj。强烈建议您使用 Destroy 代替。 |
DontDestroyOnLoad | 在加载新场景时不要销毁目标对象。 |
FindAnyObjectByType | 检索任何活动加载的 Type 类型的对象。 |
FindFirstObjectByType | 检索第一个活动加载的 Type 类型的对象。 |
FindObjectsByType | 检索所有加载的 Type 类型的对象列表。 |
Instantiate | 克隆对象 original 并返回克隆。 |
InstantiateAsync | 捕获原始对象(必须与某些游戏对象相关联)的快照并返回 AsyncInstantiateOperation。 |
CreateInstance | 创建可脚本化对象的实例。 |
bool | 对象是否存在? |
operator != | 比较两个对象是否引用不同的对象。 |
operator == | 比较两个对象引用以查看它们是否引用同一个对象。 |