Unity3d – 监视哪个脚本绑定到哪个游戏对象

我们怎样才能看到有限的脚本到gameobjects? 在一个大型项目中,通过点击每个游戏对象来查看有界脚本是很难保持监视的

如果要查看使用特定脚本的所有对象,可以使用几种方法来执行此操作。

  • 遍历所有的游戏对象并随意返回一个列表。 你可以find一个特定types的所有对象:

(其中myComponent是您感兴趣的组件的types:

 myComponent[] myComponents = FindObjectsOfType(typeof(myComponent)) as myComponent[]; Debug.Log("myComponent is attached to the following game objects: "); foreach (myComponent comp in myComponents) { Debug.Log(comp.gameObject.Name); } 
  • 创建一个脚本registry。 创建一个包含脚本及其对象字典的静态类。 例如:

附加到某种场景对象的代码:

 public static Dictionary<string, List<GameObject>> gameObjectsByScript = new Dictionary<string, List<GameObject>>(); public void AddScript(string scriptName, GameObject gameObject) { if(!gameObjectsByScript.ContainsKey(scriptName)) gameObjectsByScript.Add(scriptName, new List<GameObject>()); gameObjectsByScript[scriptName].Add(gameObject); } public List<GameObject> GetGameObjectsForScript(string scriptName) { if(gameObjectsByScript.ContainsKey(scriptName)) return gameObjectsByScript[scriptName]; else return null; } 

然后,在所有的脚本Startfunction,你可以添加:

 ScriptList.AddScript(this.GetType().Name, this.gameObject); 

你如何显示结果取决于你的个人喜好。 也许你只想在debugging窗口中列出它们,或者你想在它们周围画框,或者其他的东西。

您也可以右键单击项目视图中的脚本,select“在场景中查找引用”,它会在层次结构视图中为您提供使用该脚本的所有GameObjects的列表。