许多游戏对象上的一个脚本或通过单个GameObject上的一个脚本访问许多游戏对象

时间:2017-05-09 09:14:08

标签: unity3d unityscript

我想访问一些游戏对象的组件我有两种方法:

  1. GameObject(GO)上的脚本使用FindGameObjectsWithTag("SomeTag"); 访问许多GO,但这对某些GO不起作用
  2. 在我要访问其组件的所有GO上的相同脚本实例(不确定它被称为实例)。
  3. 我的问题是哪种方法对工作有益,优化和可持续 如果可能的话,除了上述两种方法之外,还可以给我替代。

1 个答案:

答案 0 :(得分:0)

根据您的方法:

  • GameObject(GO)上的脚本使用FindGameObjectsWithTag访问许多GO(" SomeTag");但这对某些GO来说不起作用
  

可能你认为不起作用的游戏对象会是   不活动,因为AFAIK,FindGameObjectsWithTag找到活动的游戏对象   仅

  • 我希望访问其组件的所有GO上的相同脚本实例(不确定它被称为实例)。

您应该根据正在考虑的游戏对象的数量做出决定:

如果它们有限:

您可以创建一个类似GameObjectControllerScript的脚本(附加到相机或某个根游戏对象,因此它们只是此脚本的一个实例,[您正在建立一个可能的关系]),包含所有的参考游戏对象,您想要访问其特定组件并在您感兴趣的任何事件上访问组件,并对其执行某些操作。

如,

Camera
-- Root  //<---- Attached controller script here that contains reference of StaticallyCreatedGameObject1..4
----StaticallyCreatedGameObject1
----StaticallyCreatedGameObject2
----StaticallyCreatedGameObject3
----StaticallyCreatedGameObject4

如果它们不受限制或动态生成:

这样你就不能保留引用了,所以你可以附加一个脚本说ChangeAngleScript(对于正在考虑的游戏对象),它访问游戏对象的组件并使用函数{{1}执行一些操作},并从某个根游戏对象广播updateAngle的消息。

updateAngle