此问题在此处已有答案:
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));
}
但没有写在统一的控制台我没有正确理解什么?
1条答案
按热度按时间pftdvrlh1#
我想你的条件是反着来的?用这样的代码:
...您正在检查BASE类是否是在执行程序集中找到的任何类的子类。我认为您希望它读作:
这是假设您正在寻找您自己的自定义类,这些类是从Unity的Object类派生的。