Unity:在 start() 中的其他对象上运行脚本

我正在创建一个玩家控制的对象,它的预制件中有一个脚本,可以突出显示有效移动的图块。如果手动触发,脚本可以正常工作,但在代码中无法执行


public GameObject player_prefab;

Start(){

  GameObject playerUnit =  GameObject.Instantiate(player_prefab,PlayerPoss,player_prefab.transform.rotation);

  squadEvents squadScript = (squadEvents)playerUnit.GetComponent(typeof(squadEvents));

  squadScript.ShowWalkRange();}

在互联网上挖掘告诉我我的问题是我试图在启动期间访问脚本,但我找不到原因或想出解决方法,感谢您对这些问题的任何帮助


扬帆大鱼
浏览 273回答 1
1回答

慕哥6287543

需要注意的一点是,一个实例化对象的 Start() 方法直到它的第一次 Update() 方法调用之前才会被调用。如果您在其他对象的 Start() 方法中执行任何初始化,您可以将其移至 Awake() 方法。也可能是您实际上没有正确找到组件?如果您使用 GetComponentInChildren,您将在此对象或任何预制子对象上搜索组件。private void Start(){&nbsp; GameObject playerUnit =&nbsp; GameObject.Instantiate(player_prefab,PlayerPoss,player_prefab.transform.rotation);&nbsp; squadEvents squadScript = playerUnit.GetComponentInChildren<squadEvents>();&nbsp; if ( squadScript == null )&nbsp; {&nbsp; &nbsp; Debug.Log("Could not get <squadEvents> component in this GameObject or any of its children.");&nbsp; &nbsp; return;&nbsp; }&nbsp; squadScript.ShowWalkRange();}这是GetComponentInChildren<T>()的 Unity 参考。
打开App,查看更多内容
随时随地看视频慕课网APP