Unity:如何在ScriptableObjects中使用泛型?

时间:2019-07-09 15:37:58

标签: c# unity3d

我创建了一个如下所示的可编写脚本的对象:

[CreateAssetMenu(fileName = "PlayerPrefsDefault", menuName = "Base/PlayerPrefsDefault", order = 1)]
public class PlayerPrefsDefaults : ScriptableObject
{
    public List<PlayerPrefsDefaultInt> playerPrefsDefaultInts = new List<PlayerPrefsDefaultInt>();

    [Serializable]
    public class PlayerPrefsDefault<DataType>
    {
        public string key;
        public DataType value;
    }

    [Serializable]
    public class PlayerPrefsDefaultInt : PlayerPrefsDefault<int> { }
}

到目前为止有效。但是,这不是我内心向往的美学。

因此,第1步,为什么我不能或者宁愿我该如何在我的ScriptableObject中拥有它(当然,也暴露给检查器):

    public List<PlayerPrefsDefault<int>> playerPrefsDefaultInts;

自然,这意味着使用多个列表,每种数据类型一个。

因此,第2步,我实际上更愿意定义:

    [Serializable]
    public class PlayerPrefsDefault
    {
        public System.Type type;
        public string key;
        public object value;
    }

我希望可以将任意值(int,float,bool,字符串,UnityEngine.Vector3等)分配给值变量(并使检查器GUI适应使用类型进行的选择,我知道如何为此)

最终,通常来说:如何使用ScriptableObjects尽可能通用?

0 个答案:

没有答案