假设我有这个ScriptableObject代表卡片列表:
using UnityEngine;
using System.Collections;
[CreateAssetMenu(fileName = "CardList", menuName = "Inventory/List", order = 1)]
public class CardList : ScriptableObject {
public string[] cardName;
public Sprite[] cardSprite;
}
然后我创建ScriptableObject并用我所有的卡信息填充它。
是否可以修改此代码,以便任何脚本都可以静态访问它?例如,是否可以给CardList
单身行为?
我不想创建另一个类,创建一个可以引用ScriptableObjectManager
的{{1}}很容易。我宁愿直接拨打类似CardList
之类的电话。
答案 0 :(得分:0)
当然,您可以将其创建为单例。 假设我们有一个具有类似文件层次结构的Unity Project
UnityProject
- Assets (directory)
Scripts
SampleScriptableObject.cs
- Resources (directory)
SampleScriptableObject.asset
- Project
- ..etc
将类似于
public class SampleScriptableObject<T> : ScriptableObject where T : ScriptableObject
{
private static T _instance;
public T GetInstance()
{
if (_instance == null)
{
_instance = Resources.Load(typeof(T).Name) as T;
}
return _instance;
}
}
您可以根据需要将可编写脚本的对象用作单例对象。