如何获取实现 MyClass 的脚本化对象的所有实例<T>?



给定Unity 中可脚本对象的基类

public abstract class MyBaseScriptableObject<T> : ScriptableObject { }

我可以继承

[CreateAssetMenu(fileName = "Foo", menuName = "My files.../Bar")]
public sealed class Foo : MyBaseScriptableObject<string> { }

并在编辑器中创建新的CCD_ 1类型的可脚本化对象。

我想创建一个自定义编辑器窗口,其中包含所有创建的";实例";继承自CCD_ 2。我首先尝试在我的自定义编辑器窗口脚本中获取MyBaseScriptableObject<string>类型的所有实例

private void ListAllInstances()
{
string[] guids = AssetDatabase.FindAssets("t:"+ typeof(MyBaseScriptableObject<string>).Name);
Debug.Log($"Found: {guids.Length}");
}

我创建了一个类型为Foo的可脚本化对象。不幸的是,计数是0,所以我的代码找不到任何可脚本化的对象。

有人知道这里少了什么吗?

您可以尝试AssetDatabase.FindAssets("t:Foo")查找所有Foo对象,也可以查找所有MyBaseScriptableObject对象AssetDatabase.FindAssets("t:MyBaseScriptableObject")。您无法将泛型用作类型筛选字符串。您还可以使用文件夹,将不同类型的文件夹放入不同的文件夹中,并根据需要减少对这些文件夹的搜索。

最新更新