У меня есть абстрактный класс с именем 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);
}
}
Теперь я хочу создать класс, который расширяет его и сохраняет GameObjects:
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);
}
}
Затем в моем зданииЯ сохраняю ссылку на этот объект Scriptable и вызываю:
public void OnEnable()
{
buildingSet.Add(gameObject);
}
Однако в моем редакторе он отображается как «Несоответствие типов» для каждой записи в списке, почему это так?