unity3d Unity C#在寻找类别时的问题[重复]

hzbexzde  于 2022-11-16  发布在  C#
关注(0)|答案(1)|浏览(176)

此问题在此处已有答案

Enumerating Child Classes for Selection(1个答案)
21天前关闭。
我想统一构建整个类树。为此,我创建了一个脚本,它打印输入中类的所有可能的子类,并将其附加到一个空对象上,但它什么也没有返回

public class FindAll : MonoBehaviour
{
    public void FindAllDerivedTypes(Assembly assembly, Type baseType)
    {
        TypeInfo typeInfo = baseType.GetTypeInfo();
        List<string> classNames = new List<string>();
        foreach(Type t in assembly.GetTypes())
        {
            if(baseType.IsSubclassOf(t))
            {
                Debug.Log(t.Name + " Subclass of " + baseType.Name);
                FindAllDerivedTypes(assembly, t);
            }
        }
    }

    // Start is called before the first frame update
    void Start()
    {
        FindAllDerivedTypes(Assembly.GetExecutingAssembly(), typeof(UnityEngine.Object));
    }

但没有写在统一的控制台我没有正确理解什么?

pftdvrlh

pftdvrlh1#

我想你的条件是反着来的?用这样的代码:

if (baseType.IsSubclassOf(t))

...您正在检查BASE类是否是在执行程序集中找到的任何类的子类。我认为您希望它读作:

if (t.IsSubclassOf(baseType))

这是假设您正在寻找您自己的自定义类,这些类是从Unity的Object类派生的。

相关问题