【问题标题】:How to display health using GUIText?如何使用 GUIText 显示健康?
【发布时间】:2014-11-10 10:21:02
【问题描述】:

我想将我的健康显示为 GUIText,并在玩家击中时减少。如何根据我的健康脚本编写代码?

这是我的健康脚本

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;
     }

更新:我不想显示敌人的健康状况,此脚本已附加到每个敌人身上

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    我建议你总是使用 OnGui 方法来显示游戏界面

    void OnGUI(){
        GUI.color = Color.red;
        GUI.Label(new Rect (20,20,200,20), "Health = " + hp);
    }
    

    了解此代码所需的所有文档都在这里:

    GUI.Label http://docs.unity3d.com/ScriptReference/GUI.Label.html OnGui方法:http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnGUI.html

    希望对您有所帮助,如果您对此代码有任何问题,请询问!

    【讨论】:

    • OnGui 方法每帧运行一次,用于表示游戏的界面。使用 GUI.Label,您正在创建一个具有 Rect 大小和文本“Health”+ 您的 hp 变量的“框”。只需粘贴代码(我刚刚编辑过代码,有一个错误)并运行游戏,你会看到它是如何工作的;)
    • 好的,我添加了该代码,但它没有显示,缺少什么?
    • 最好创建一个名为 gameController 的空游戏对象,然后将您需要在游戏上运行的所有脚本附加到该游戏对象。
    • 好的,你可以轻松解决这个“问题”。只需创建一个公共布尔变量 (public bool isPlayer;)。现在,在您的游戏对象检查器中,您可以选择变量的值(如果您在玩家的游戏对象中,则为 true,如果您在敌人的游戏对象中,则为 false)。然后,使用 isPlayer 创建一个 if else 语句。您应该对此没有问题,如果可行,请毫不犹豫地提供帮助并投票!
    • 嘿,这对我很有帮助。谢谢你的主意!这是工作......:D
    【解决方案2】:

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

    var myNiceVariable = "Showing the health values!";
    var guiText = GameObject.Find("GUI Text").GetComponent(GUIText);
    guiText.text = myNiceVariable;
    

    或者你可以使用OnGui方法,你可以添加到你的脚本中:

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

    代码取自 here 和 here。

    【讨论】:

    • 你的意思是这样的吗? void OnGui() { GUILayout.Label(Rect (5,5,10,100), "Points : " +hp); }
    • 是的,我正在更新答案以在 C# 中显示它。很抱歉造成混乱!
    • 我添加了那行代码,但它说 UnityEngine.Rect 是一种类型,但它使用类似变量
    • 检查更新,“新”键盘不见了。您可以在代码之外创建 Rect 并在那里使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2022-06-13
    • 1970-01-01
    • 2019-02-06
    相关资源
    最近更新 更多