【问题标题】:unity/c#: data from another gameobjectunity/c#:来自另一个游戏对象的数据
【发布时间】:2021-05-26 04:34:06
【问题描述】:

我想在我的 Unity 游戏中获得另一个 GameObject 的浮动。 Gameonject 称为“Spawner”,GameObject 上的脚本为“CarZSpawner”,脚本中的浮点数为“mult”。浮点数“每隔几秒就会改变一次。”

我尝试了很多东西,但没有任何效果,我在互联网上找不到任何东西:(

public class TrainScript : MonoBehaviour
{
void Update()
      {
           float test = GameObject.Find("Spawner").GetComponent<CarScriptZ.mult>()
      }
}

感谢您的帮助:)

【问题讨论】:

  • 您在名为“Spawner”的 GameObject 上的脚本名称为“CarZSpawner”?在您的代码中,您尝试获取名称为“CarScriptZ”的脚本。或者你有一个名为“CarZSpawner”的游戏对象,脚本为“CarScriptZ”?如果是这样,您在错误的 GameObject 中查找脚本。
  • 在任何情况下,您都不应该在更新函数中使用 GameObject.Find。您可以在 Awake 或 Start 函数中创建一个变量并保存对 Spawner 的引用。另外,运行代码时遇到什么错误?

标签: c# unity3d gameobject


【解决方案1】:

我很高兴您的脚本被称为 CarScriptZ 和 mult 是您尝试访问的字段,所以它应该是

float test = GameObject.Find("Spawner").GetComponent<CarScriptZ>().mult;

除此之外,您应该存储参考一次,例如在Start 中,然后像以后一样重新使用它

// If possible already reference this via the Inspector by drag & drop
[SerializeField] private CarScriptZ carScriptZ; 

private void Start()
{ 
    // As fallback get it ONCE on runtime
    if(!carScriptZ) carScriptZ = GameObject.Find("Spawner").GetComponent<CarScriptZ>(); 
} 

private void Update()
{
    float test = carScriptZ.mult; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多