在Unity中通过System.Type.GetType(“类”) 不能直接使用。
我们可以通过下面的方式来获得
public static System.Type GetTypeByName(string name)
{
foreach (Assembly assembly in System.AppDomain.CurrentDomain.GetAssemblies())
{
foreach (System.Type type in assembly.GetTypes())
{
if (type.Name == name)
return type;
}
}
return null;
}
使用的时候可以
var type1 = GetTypeByName("MB3_TextureBaker");
Object[] bakers1 = GameObject.FindObjectsOfType(type1, true);
for (int i = 0; i < bakers1.Length; i++)
{
var ob = bakers1[i];
EditorUtility.SetDirty(ob);
Debug.Log("Deleting TextureBaker -> " + bakers1[i].name);
GameObject.DestroyImmediate(bakers1[i]);
all++;
}
这里有个缺陷就是获取到第一个类型相同的就返回了,可以自行处理。
在Unity中,无法直接使用System.Type.GetType来获取类实例,文章提供了一个自定义方法GetTypeByName遍历所有Assembly获取类型。通过这个方法找到指定名称的类后,可以进一步使用GameObject.FindObjectsOfType找到场景中的实例并进行操作,如标记为脏(EditorUtility.SetDirty)和立即销毁(GameObject.DestroyImmediate)。需要注意的是,该方法只返回第一个匹配的类型。
2430

被折叠的 条评论
为什么被折叠?



