前言
本文由作者@zx一路飛奔出品,轉載請註明出處
文章地址:http://blog.csdn.net/u014735301/article/details/43085145作者微博:http://weibo.com/u/1847349851
NGUI HUD Text是一款不錯的信息顯示插件,
例如人物頭頂的對話顯示,受到傷害,治療的數字顯示等。
顧名思義,這款插件是基於NGUI開發的,也就是說它必須跟NGUI配套使用。
這裏我使用這個插件來做一個攻擊傷害的顯示,同時也在怪物頭頂做了血條。先看看效果!
感覺還是超酷的! 下面來看看插件是怎麼使用的
血條製作
同時爲了使血條能夠顯示在enemy的頭頂,還需要添加UIFollowTarget腳本
在enemy上方創建一個空對象,將腳本中target選擇那個對象。
這樣在遊戲中,血條就會跟隨enemy的移動而移動了!!同時傷害顯示也會在這個地方出現!!
傷害顯示
在True Type Font 選擇字體,下面是字體大小,樣式,
Effect 是信息顯示的樣式,我選擇none。
Offset ,Alpha,Sacle 爲顯示信息的動畫效果,可以默認,也可以自己調整
在enemy控制腳本中,使用它,
HUDText mText.Add(String text, Color color, float stayDuration),text是需要顯示的文本,color是文本顏色,stayDuration是文本顯示的時間
//受到傷害
public void GetDamage(float hit, float multipleDamage)
{
Debug.Log("enemy受到了" + hit + "點傷害 * " + multipleDamage);
for (int i = 0; i < multipleDamage; i++)
{
text.Add("-" + hit + "", Color.yellow, 0.1f);
//根據血量的扣除,來調整value的值
slider.value -= 0.1f;
}
EnemyLockTarget(player);
ctrlAnimState = ControlAnimationState.TakeAtk;
}
這樣就可以造成剛開始圖片中的效果了!!
實例化enemy和血條
using UnityEngine;
using System.Collections;
public class SpawnTest : MonoBehaviour {
//enemy 和 HUD 的prefab
public GameObject enemyPrefab,HUDPrefab;
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
//實例化enemy
GameObject enemy = Instantiate(enemyPrefab, new Vector3(transform.position.x, transform.position.y,
Random.Range(-5f,5f)), Quaternion.identity) as GameObject;
//在HUDRoot對象下,實例化血條和HUDText
GameObject HUD = NGUITools.AddChild(HUDRoot.go,HUDPrefab);
//設置target對象爲enemy的子物體showInfo
UIFollowTarget follow = HUD.GetComponent<UIFollowTarget>();
follow.target = GameSetting.GetTransform(enemy.transform,"showInfo");
//將hudtext腳本賦值給EnemyController使用
HUDText hud = HUD.GetComponent<HUDText>();
EnemyController enemyC = enemy.GetComponent<EnemyController>();
enemyC.text = hud;
}
}
}
//查找某個物體下無限層級的子物體名稱,並返回該子物體。
static public Transform GetTransform(Transform check, string name)
{
foreach (Transform t in check.GetComponentsInChildren<Transform>())
{
if (t.name == name) { return t; }
}
return null;
}