【发布时间】:2019-10-20 00:29:43
【问题描述】:
我有一个名为RunTimeSet<T>的抽象类:
public abstract class RuntimeSet<T> : ScriptableObject
{
public List<T> items = new List<T>();
public void Add(T t)
{
if(!items.Contains(t)) items.Add(t);
}
public void Remove(T t)
{
if (!items.Contains(t)) items.Remove(t);
}
}
现在我想创建一个扩展它的类,并存储游戏对象:
public class BuildingSet : RuntimeSet<GameObject>
{
//...
}
static class BuildingSetMenu
{
[MenuItem("Assets/Create/Sets/BuildingSet")]
public static void CreateRuntimeSet()
{
var asset = ScriptableObject.CreateInstance<BuildingSet>();
var path = AssetDatabase.GetAssetPath(Selection.activeObject);
path += "/My New BuildingSet.asset";
ProjectWindowUtil.CreateAsset(asset, path);
}
}
然后在我的 Building 中,我保留对这个 Scriptable Object 的引用,然后调用:
public void OnEnable()
{
buildingSet.Add(gameObject);
}
但是,在我的编辑器中,列表中的每个条目都显示为“类型不匹配”,这是为什么呢?
【问题讨论】: