我正在创建一个玩家控制的对象,它的预制件中有一个脚本,可以突出显示有效移动的图块。如果手动触发,脚本可以正常工作,但在代码中无法执行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 参考。
- 1 回答
- 0 关注
- 272 浏览
添加回答
举报
0/150
提交
取消