C# 如何使用GuitText显示运行状况?

C# 如何使用GuitText显示运行状况?,c#,unity3d,C#,Unity3d,我想将我的健康状况显示为吉他文本,并在演奏者敲击时降低。如何基于我的健康脚本进行编码 这是我的健康脚本 using UnityEngine; using System.Collections; public class HealthScript : MonoBehaviour { public static HealthScript instance; public int hp = 1; private GUIText scoreReference;

我想将我的健康状况显示为吉他文本,并在演奏者敲击时降低。如何基于我的健康脚本进行编码

这是我的健康脚本

using UnityEngine;
 using System.Collections;

 public class HealthScript : MonoBehaviour {

     public static HealthScript instance;
     public int hp = 1;
     private GUIText scoreReference;
     private GUIText highscoreReference;
     private static int _highscore = -1;
     public int highscore { 
         get { if (_highscore == -1) 
             _highscore = PlayerPrefs.GetInt("Highscore", 0);
             return _highscore; 
         }
         set {
             if (value > _highscore) {
                 _highscore = value;
                 highscoreReference.text = _highscore.ToString();
                 PlayerPrefs.SetInt("Highscore", _highscore);
             }
         }
     }

     public bool isEnemy = true;


     private static int points;
     public void Damage(int damageCount) {
         hp -= damageCount;

         if (hp <= 0)
         {
             // Dead!
             Destroy(gameObject);
             points++;
             scoreReference.text = points.ToString();
         }
     }

     public void gameEnd() {

         highscore = points;
         points = 0;
     }


     void Start()
     {
         scoreReference = GameObject.Find("Score").guiText;
         highscoreReference = GameObject.Find("HighScore").guiText;
         scoreReference.text = points.ToString(); 
         highscoreReference.text = highscore.ToString ();
         instance = this;
     }
使用UnityEngine;
使用系统集合;
公共类HealthScript:MonoBehavior{
公共静态脚本实例;
公共int hp=1;
私人吉他参考;
私人吉他参考;
私有静态int_highscore=-1;
公共整数高分{
获取{if(_highscore==-1)
_highscore=PlayerPrefs.GetInt(“highscore”,0);
返回高分;
}
设置{
如果(值>高分){
_高分=价值;
highscoreReference.text=_highscore.ToString();
PlayerPrefs.SetInt(“高分”和“高分”);
}
}
}
公共利益=真;
私有静态int点;
公共空间伤害(智力伤害计数){
hp-=损伤计数;

如果(hp您可以使用变量在GUI上用C#轻松显示,方法如下:

var myNiceVariable = "Showing the health values!";
var guiText = GameObject.Find("GUI Text").GetComponent(GUIText);
guiText.text = myNiceVariable;
或者,您可以使用该方法,也可以向脚本中添加:

void OnGui(){
     GUI.Label(new Rect (5,5,10,100), "Health: " + hp);
}

代码取自和。

通过执行以下操作,您可以使用变量在GUI上用C#轻松显示:

var myNiceVariable = "Showing the health values!";
var guiText = GameObject.Find("GUI Text").GetComponent(GUIText);
guiText.text = myNiceVariable;
或者,您可以使用该方法,也可以向脚本中添加:

void OnGui(){
     GUI.Label(new Rect (5,5,10,100), "Health: " + hp);
}

代码取自和。

我建议您始终使用OnGui方法来显示游戏界面

void OnGUI(){
    GUI.color = Color.red;
    GUI.Label(new Rect (20,20,200,20), "Health = " + hp);
}
理解此代码所需的所有文档如下:

标签 OnGui方法:


希望这对您有所帮助,询问您是否对这段代码有任何问题!

我建议您始终使用OnGui方法来显示游戏的界面

void OnGUI(){
    GUI.color = Color.red;
    GUI.Label(new Rect (20,20,200,20), "Health = " + hp);
}
理解此代码所需的所有文档如下:

标签 OnGui方法:


希望这对您有所帮助,询问您是否对这段代码有任何问题!

您的意思是这样的吗?void OnGui(){GUILayout.Label(Rect(5,5,10100),“Points:”+hp);}是的,我正在更新答案,以便用C#显示它。很抱歉造成混淆!我添加了那行代码,但它说的是UnityEngine。Rect是一种类型,但它像变量一样使用。检查更新,缺少“新”键盘。你可以在代码之外创建Rect,并在那里使用它。你的意思是这样的吗?void OnGui(){GUILayout.Label(Rect(5,5,10100),“Points:+hp)}是的,我正在更新答案以用C#显示它。很抱歉造成混淆!我添加了那行代码,但它说的是UnityEngine。Rect是一种类型,但它使用的方式类似于variableCheck更新,即“new”键盘丢失。你可以在代码外创建Rect并在那里使用它。OnGui方法运行每一帧,用于表示游戏的界面。使用GUI。标记你正在创建一个带有Rect大小和文本“Health”+你的hp变量的“框”。只需粘贴代码(我刚刚编辑了代码,有一个bug)然后运行游戏,你会看到它是如何工作的;)好吧,我添加了代码,但它没有显示,缺少了什么?创建一个名为gameController的空游戏对象,然后将需要在游戏上运行的所有脚本附加到该游戏对象上总是好的。好的,你可以用简单的方法解决这个“问题”。只需创建一个公共布尔变量(public bool isPlayer;)。现在,在游戏对象检查器中,您可以选择变量的值(如果您在玩家的游戏对象中,则为true;如果您在敌人的游戏对象中,则为false)。然后,用isPlayer创建一个if-else语句。你应该对此没有问题,如果它有效,请毫不犹豫地提供帮助并投票。嘿,这对我帮助很大。感谢你的想法!它很有效…:t OnGui方法每帧运行一次,它用于表示游戏的界面。使用GUI.Label,你正在创建一个“框”使用Rect的大小和文本“Health”+您的hp变量。只需粘贴代码(我刚刚编辑了代码,有一个bug)并运行游戏,您就会看到它是如何工作的;)好的,我添加了代码,但它没有显示,缺少了什么?创建一个名为gameController的空游戏对象,然后将游戏上运行的所有脚本附加到该游戏对象上总是好的。好的,你可以用简单的方法解决这个“问题”。只需创建一个公共布尔变量(public bool isPlayer;).现在,在游戏对象检查器中,您可以选择变量的值(如果您在玩家的游戏对象中,则为true;如果您在敌人的游戏对象中,则为false)。然后,用isPlayer创建一个if-else语句。你应该对此没有问题,如果它有效,请毫不犹豫地提供帮助并投票支持!嘿,这对我很有帮助。谢谢你的想法!这是有效的…:D