c# - 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();}
在互联网上挖掘告诉我我的问题是我试图在启动期间访问脚本,但我找不到原因或想出解决方法,感谢您对这些问题的任何帮助
解决方案
需要注意的一点是,实例化对象的 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();
}
推荐阅读
- python - 配置文件首选项不适用于 Selenium Python
- python - 在 VSCode 中获取 python 函数文档字符串的快捷方式
- r - 如何计算R中多个标准差的平均值
- cplex - 解决方案只返回一些决策变量
- javascript - 如何将带有附加信息的多个文件附加到表单数据中?
- python - 内容更新时如何仅在 Python 中打印字符串?
- python - 如何找到numpy数组的每两行的平均值
- java - ERR 此实例已禁用集群支持
- javascript - 为什么我不能访问同一类的静态对象中的静态函数?
- visual-studio-code - VSCode:无法读取未定义的属性“包含”