为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
扬帆大鱼 2021-08-07 15:17:20
我正在创建一个玩家控制的对象,它的预制件中有一个脚本,可以突出显示有效移动的图块。如果手动触发,脚本可以正常工作,但在代码中无法执行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();}在互联网上挖掘告诉我我的问题是我试图在启动期间访问脚本,但我找不到原因或想出解决方法,感谢您对这些问题的任何帮助
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

需要注意的一点是,一个实例化对象的 Start() 方法直到它的第一次 Update() 方法调用之前才会被调用。如果您在其他对象的 Start() 方法中执行任何初始化,您可以将其移至 Awake() 方法。


也可能是您实际上没有正确找到组件?如果您使用 GetComponentInChildren,您将在此对象或任何预制子对象上搜索组件。


private void Start()

{

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

  squadEvents squadScript = playerUnit.GetComponentInChildren<squadEvents>();

  if ( squadScript == null )

  {

    Debug.Log("Could not get <squadEvents> component in this GameObject or any of its children.");

    return;

  }

  squadScript.ShowWalkRange();

}

这是GetComponentInChildren<T>()的 Unity 参考。


查看完整回答
反对 回复 2021-08-07
  • 1 回答
  • 0 关注
  • 272 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信