如何从多个游戏对象访问脚本?

时间:2018-02-20 04:26:22

标签: c# unity3d

我知道如何访问脚本但不知道如何从不同的游戏对象访问脚本?例如:

我有一辆名为" Vehicle1"和代码:

CarScript driveScript;

driveScript = GameObject.Find ("Vehicle1").GetComponent<CarScript > ();

这样我就可以从Vehicle1访问CarScript,但如何使用相同的脚本访问它,但如果另一辆车的名称是&#34; Vehicle2&#34;?我知道,自Unity 5以来,这是一种方法,但如果有多个对象可供访问,则不确定如何访问脚本。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

您希望Vehicle1检查isDriving上的Vehicle2吗? Vehicle1是否引用了GameObject的{​​{1}}?如果是这样,您可以创建一个脚本变量并从Vehicle2

获取对它的引用
Vehicle2's GameObject

scriptName vehicle2Script = vehicle2Obj.GetComponent<scriptName>(); if (vehcile2Script.isDriving)......... 是包含scriptName

的脚本的名称

isDriving是对vehicle2Obj

GameObject的引用

答案 1 :(得分:0)

根据我的理解,您希望访问所有具有相同组件的不同GameObjects,但如果它们的名称不同,则会执行不同的操作吗?

如果是这种情况,请尝试:

 CarScript[] carScripts = FindObjectsOfType<CarScript>();

 foreach(CarScript carScript in carScripts)
 {
     if(carScript.gameObject.name == "Vehicle1")
         print("I am vehicle 1!")

     if(carScript.gameObject.name == "Vehicle2")
         print("I am vehicle 2!") 
 }

答案 2 :(得分:0)

如果您想获得许多类似的对象并使用类似kafka-clients的内容,则需要使用GameObject.Find()。 因此,您将拥有“Vehicle”标签,并且许多具有不同名称的对象必须使用选定的标签“Vehicle”。

GameObject.FindGameObjectsWithTag()