Unity3d 中HudText插件使用 伤害数字显示

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HudTextEx : UnitySingleton<HudTextEx> {

    protected class HudPanel
    {
        public UIFollowTarget ut;
        public HUDText hudText;
        private GameObject panelGameObject;
        public HudPanel(Transform showPosT)
        {

            panelGameObject =ToolsYhy.ResouceIniteNGUI(Consts.HudTextEx_ResoucesPath);
            ut = panelGameObject.AddComponent<UIFollowTarget>();
            ut.gameCamera = NGUIRoot._3dCamera;
            ut.uiCamera = NGUIRoot._2dCamera;
            ut.target = showPosT;
            hudText = panelGameObject.GetComponent<HUDText>();
        }
        public void DestroyPanel()
        {
            ut.enabled = false;
            panelGameObject.SetActive(false);
            Destroy(panelGameObject);
        }
    }

    Dictionary<int, HudPanel>  dict =new Dictionary<int, HudPanel>();



    /// <summary>
    /// 显示加血
    /// </summary>
    /// <param name="tra"></param>
    /// <param name="hp"></param>
    public void CreatShowAddHp(Transform showPosT, int hp)
    {
        HudPanel hup = null;
        if (dict.ContainsKey(showPosT.GetInstanceID()) == false)
        {
            hup =new HudPanel(showPosT);
            hup.hudText.name = "HudText_name:[" + showPosT.ParentRoot().name + "]_id[" + showPosT.GetInstanceID() + "]";
            dict.Add(showPosT.GetInstanceID(), hup);
        }
        else
        {
            hup = dict[showPosT.GetInstanceID()];
        }
        hup.hudText.Add(hp, Color.green, 0f);
    }
    /// <summary>
    /// 显示伤害
    /// </summary>
    /// <param name="tra"></param>
    /// <param name="num"></param>
    public void CreatShowDamage(Transform showPosT, int num)
    {
        HudPanel hup = null;
        if (dict.ContainsKey(showPosT.GetInstanceID()) == false)
        {
            hup = new HudPanel(showPosT);
            hup.hudText.name = "HudText_name:[" + showPosT.ParentRoot().name + "]_id[" + showPosT.GetInstanceID() + "]";
            dict.Add(showPosT.GetInstanceID(), hup);
        }
        else
        {
            hup = dict[showPosT.GetInstanceID()];
        }
        num = num < 0 ? num : -num;
        hup.hudText.Add(num, Color.red, 0f);
    }

    /// <summary>
    /// 如果角色死亡,移除这个面板
    /// </summary>
    void UpdateCheak()
    {
        if(dict.Count <0) return;
       ///保存要删除的物体key
        List<int> list =new List<int>();

        foreach (var item in dict)
        {
            if (item.Value.ut.target == null)
            {
                list.Add(item.Key);
            }
        }

        foreach (var item in list)
        {
            dict[item].DestroyPanel();
            dict.Remove(item);
        }
    }

    private float timer=0;

    void FixedUpdate()
    {
        if (dict.Count < 0) return;

        //如果角色死亡,移除这个面板,1秒检测一次
        if (timer < 1f)
        {
            timer += Time.deltaTime;
            
        }
        else
        {
            timer = 0;
            UpdateCheak();
        }
	}
}


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值