从组件游戏对象访问容器游戏对象


  1. 我创建了一个GameObject并将其命名为"sensor"。然后,我向传感器添加了一个BoxCollider和一个脚本(script_sensor(。

  2. 然后我创建了另一个GameObject并将其命名为"出租车"。我在出租车中添加了一个脚本 (script_taxi(,并在脚本中创建了一个公共Collider2D

  3. 然后我将传感器GameObject分配给出租车的公共Collider2D

  4. 现在,我想从script_sensor访问script_taxi

基本上,我如何从script_sensor(框2(访问script_taxi(图像上的框1(?

检查图像以更好地理解。

Ps:当我向出租车预制件发送垃圾邮件时,每个传感器对象都应该能够找到自己的容器游戏对象(出租车(。

如果你想从script_sensor访问script_taxi,你需要某种类型的引用来script_taxiscript_sensor。然后,您可以使用GetComponent.您也可以使用GameObject.Find的变体,但是这些调用可能很昂贵。

public class script_sensor : MonoBehavior {
[SerializeField]
private GameObject taxi;
private script_taxi taxiScript;
void Start() {
taxiScript = taxi.GetComponent<script_taxi>();
}
}

此外,建议遵循 C# 命名约定。

script_sensor => Sensor

script_taxi => Taxi

public Collider2D col; => [SerializeField] private Collider2D col;

或者使用 GameObject.Find(( 查找出租车 GameObject,如下所示:

script_taxi taxi;
void Awake() 
{    
taxi = GameObject.FindWith("taxi").GetComponent<script_taxi>();
}

最新更新