Unity实战 RTS3D即时战略游戏开发(八) HUD的使用 单位信息显示

      大家好,我是Zander,我们接着来开发Rts3D即时战略游戏开发。这一章我们将处理单位信息在UI上的具体显示。

     首先为了显示一些信息,我们需要新创建一个脚本来控制信息面板,所以在HUD文件夹下创建一个InfoManager的脚本,如下

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class InfoManager : MonoBehaviour {

	public static InfoManager Current;

	public Image ProfilePic;  //所选单位的缩略图
	public Text Line1, Line2, Line3;  //所选单位的信息介绍

	public InfoManager()
	{
		Current = this;
	}
    /// <summary>
    /// 设置text文字
    /// </summary>
    /// <param name="line1"></param>
    /// <param name="line2"></param>
    /// <param name="line3"></param>
	public void SetLines(string line1, string line2, string line3)
	{
		Line1.text = line1;
		Line2.text = line2;
		Line3.text = line3;
	}
    /// <summary>
    /// 清理文字
    /// </summary>
	public void ClearLines()
	{
		SetLines ("", "", "");
	}
    /// <summary>
    /// 设置头像
    /// </summary>
    /// <param name="pic"></param>
	public void SetPic(Sprite pic)
	{
		ProfilePic.sprite = pic;
		ProfilePic.color = Color.white;
	}
    /// <summary>
    /// 清理头像
    /// </summary>
	public void ClearPic()
	{
		ProfilePic.color = Color.clear;
	}

	// Use this for initialization
	void Start () {
		ClearLines ();
		ClearPic ();
	}
}
保存代码,在游戏中选择Hud下的Info物体,并添加InfoManager组件,分别给InfoManager中的变量赋值,如图
现在InfoManager就可以控制面板信息显示了,刚开始运行会清空面板,我们做的目的是为了选中单位时,显示单位的详细信息,这样就意味着每个单位要有自己的详细信息,所以,我们在Interactions文件夹下,新建一个ShowUnitInfo脚本,如图:

using UnityEngine;
using System.Collections;

public class ShowUnitInfo : Interaction {

	public string Name;  //单位名称
	public float MaxHealth, CurrentHealth;   //最大血量  当前血量
	public Sprite ProfilePic;    //头像

    /// <summary>
    /// 重写被选中方法
    /// </summary>
	public override void Select ()
	{
		InfoManager.Current.SetPic (ProfilePic);
		InfoManager.Current.SetLines (
			Name, 
			CurrentHealth + "/" + MaxHealth,
			"Owner: " + GetComponent<Player> ().Info.Name);
	}

    /// <summary>
    /// 取消被选中的方法
    /// </summary>
	public override void Deselect ()
	{
		InfoManager.Current.ClearPic ();
		InfoManager.Current.ClearLines ();
	}
}
代码我们写好了,保存一下。这个脚本中我们需要设置头像,所以我们需要一张图片,找到第一章节中所给的资源Resources->Content4中的DroneUnitFace图片,把它拖到Unity中,然后把它的Texture type 属性改成Sprite,  max Size 改成256 如图:


接着,我们为DroneUnit预设添加ShowUnitInfo脚本,并把DroneUnitFace图片拖拽到ProfilePic上,设置一下预设的名字,血量值,如图:

   
好了,现在运行起来,选择单位时就能显示它的信息了。如图所示:


接下来,我们要从这个文本区内显示我们拥有多少金钱,我们创建一个CashBoxManager脚本,并编辑,如下:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class CashBoxManager : MonoBehaviour {

	public Text CashField;  //显示持续更新的金币信息
	
	// Update is called once per frame
	void Update () {
		CashField.text = "$ " + (int)Player.Default.Credits;
	}
}

保存代码并返回Unity,把CashBoxManager添加到Manager上,然后把Hud下的CashBoxImage拖拽到CashField位置上,运行就可以看到金额显示了,如图:


好了,这一章就写到这, 欢迎大家加入QQ群:280993838  或者关注我的公众号:







  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值