这只适用于cs内Gameobject的命名与Hierarchy一致的情况
[MenuItem("Tools/AddGameObject")]
public static void AddGameObject()
{
Object[] objects = Resources.FindObjectsOfTypeAll<GameObject>();
for (int i = 0; i < objects.Length; i++)
{
GameObject go = objects[i] as GameObject;
if (go == null)
continue;
if (go.hideFlags == HideFlags.NotEditable ||
go.hideFlags == HideFlags.HideAndDontSave ||
go.hideFlags > HideFlags.HideAndDontSave)
continue;
MonoBehaviour[] monos = go.GetComponents<MonoBehaviour>();
for (int j = 0; j < monos.Length; j++)
{
var fields = monos[j].GetType().GetFields();
for (int k = 0; k < fields.Length; k++)
{
go = GameObject.Find(fields[k].Name);
if (go == null)
continue;
fields[k].SetValue(monos[j], go);
}
}
}
EditorSceneManager.SaveOpenScenes();
}
本文介绍了一个Unity编辑器脚本,该脚本能够遍历场景中的所有GameObject,并将其组件中的字段与同名GameObject进行匹配。这在GameObject的命名与Hierarchy一致时特别有用,可以自动完成GameObject之间的引用设置。
1920

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



