【问题标题】:Unity C# getting a variable from another script on the same GameObjectUnity C# 从同一个游戏对象的另一个脚本中获取变量
【发布时间】:2018-12-10 02:27:11
【问题描述】:

所以我得到了默认的 FPSController 作为我的游戏对象。

我添加了一个名为 Controller 的脚本,其中包含一个名为 holding 的布尔值,它允许我拾取一个对象。 现在我想在 FirstPersonController 脚本中添加一个 if 语句,如果 hold 为真,我将无法在该脚本中运行。因此我需要在我的 FPScontroller 脚本中使用 bool。

我尝试了不同的方法,但每次我使用 .GetComponent<Controller>

我收到一条错误消息,提示找不到控制器。

Controller 中的类和布尔值一样是公共的。 它们都在同一个对象上。

【问题讨论】:

    标签: c# unity3d scripting


    【解决方案1】:

    似乎一切都很好。

    当你在 FPSController 中编写时会发生什么

    Controller controller = transform.GetComponent<Controller>();
    

    控制器是否为空?或者你得到一个空引用异常?

    【讨论】:

    • 尝试重新导入您的控制器脚本。右键单击它,然后单击重新导入。还要看看你的项目中是否没有其他同名脚本
    • 做到了。什么都没有改变。看起来他只是没有找到 controller.cs,但是除了将两者放在同一个 GameObject 上并将两者都公开之外,我怎么能让他找到它呢?
    • 您可以将它放在任何 GameObject 上,并通过检查器或 GameObject.Find("Gameobjectname").GetComponent() 公开访问它
    • GameObject.Find("Gameobjectname").GetComponent() 有 红色下划线。说找不到控制器
    • 请确认您的项目中是否有Controller脚本。还运行该项目,看看是否有错误。你在用视觉工作室吗?
    【解决方案2】:

    您试图将“控制器”作为您所在脚本的子级。尝试:

    this.GameObject.GetComponent<Controller>
    

    可能是:

     this.gameObject.GetComponent<Controller>
    

    但是其中之一可以解决您的问题

    【讨论】:

      猜你喜欢
      • 2022-11-20
      • 1970-01-01
      • 2014-12-20
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多