- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
例如,我在脚本“HealthBarGUI1”中有一个变量 (public static float currentLife),我想在另一个脚本中使用这个变量。如何将变量从一个脚本传递到另一个 C# Unity 2D?
最佳答案
你可以这样做,因为 currentLife 与玩家的关系比与图形用户界面的关系更密切:
class Player {
private int currentLife = 100;
public int CurrentLife {
get { return currentLife; }
set { currentLife = value; }
}
}
并且您的 HealthBar 可以通过两种方式访问 currentLife。
1) 使用 GameObject 类型的公共(public)变量,您只需将玩家从层次结构中拖放到检查器中脚本组件的新字段中。
class HealthBarGUI1 {
public GameObject player;
private Player playerScript;
void Start() {
playerScript = (Player)player.GetComponent(typeof(Player));
Debug.Log(playerscript.CurrentLife);
}
}
2) 自动方式是通过使用find实现的。它有点慢,但如果不经常使用,没关系。
class HealthBarGUI1 {
private Player player;
void Start() {
player = (Player)GameObject.Find("NameOfYourPlayerObject").GetComponent(typeof(Player));
Debug.Log(player.CurrentLife);
}
}
我不会将您的玩家或任何其他生物的 currentLife 变量设为静态。这意味着,此类对象的所有实例共享相同的 currentLife。但我想他们都有自己的人生值(value)吧?
在面向对象中,出于安全和简单的原因,大多数变量应该是私有(private)的。然后可以通过使用 getter 和 setter 方法来访问它们。
我所说的第一句话的意思是,您还希望以一种非常自然的方式在 oop 中对事物进行分组。玩家有生命值?写入玩家类!之后,您可以让其他对象可以访问该值。
来源:
https://www.youtube.com/watch?v=46ZjAwBF2T8 http://docs.unity3d.com/Documentation/ScriptReference/GameObject.Find.html http://docs.unity3d.com/Documentation/ScriptReference/GameObject.GetComponent.html
关于c# - 如何将变量从一个脚本传递到另一个 C# Unity 2D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927521/
我是一名优秀的程序员,十分优秀!