gpt4 book ai didi

c# - 如何将变量从一个脚本传递到另一个 C# Unity 2D?

转载 作者:太空狗 更新时间:2023-10-29 22:32:16 28 4
gpt4 key购买 nike

例如,我在脚本“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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com