【问题标题】:Shared variables in Unity 3D [duplicate]Unity 3D中的共享变量[重复]
【发布时间】:2016-05-16 13:48:38
【问题描述】:

我的游戏中有 2 个 c# 脚本。其中一个在我的“主要播放器对象”中,另一个脚本在“我的主摄像机”中。我想在我的主玩家的脚本中声明一个浮点变量,并且在每一场比赛中我都想在该变量中记录我的玩家的 x 位置,同时将此值传递给我的主摄像机的脚本并分配这个在每场比赛中将值放入我的主摄像头的 x 位置。如何将变量从另一个变量传递给脚本?或者我如何创建一个可以被我的游戏中的任何脚本使用的变量?

【问题讨论】:

  • 有几种方法可以解决这个问题。一种是在相机脚本上创建一个公共的 Transform/GameObject 变量,然后在 Unity 检查器中将玩家对象拖到它上面。然后,您可以使用它访问播放器的transform.position.x。对于您的情况,这是最简单的解决方案,播放器脚本本身不需要额外的脚本。但是,这只会使相机脚本可以访问此变量 - 如果您需要从项目中的所有脚本访问它,则需要以不同的方式处理它。
  • 照汤姆说的做。这个问题已经被问了 1000 次了!

标签: c# unity3d


【解决方案1】:

有一个答案here 非常详细地解释了这个问题,但该答案中包含的最简单的方法是执行以下操作:

public class Speed: MonoBehaviour
    public float speed;
    // maybe you want restrict this to have read access, then you should use a property instead

然后在其他脚本中:

GameObject gameObject = GameObject.Find ("Some object");
Speed theSpeed = gameObject.GetComponent <Speed> ();
float mySpeed= theSpeed.speed;

【讨论】:

  • 第二种方法看起来更安全。非常感谢。
  • 没问题,如果这对您有所帮助,请确保您勾选了答案! :-)
猜你喜欢
  • 2011-05-31
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
相关资源
最近更新 更多