版权声明:本博客一本正经胡说八道,文章内容不能作参考。本文为博主原创文章,未经博主允许不得转载。该博客所用图片资源均作学习分享用途,仅供参考,请勿用于商业行为。传播者自负。 如果本博客所写文章侵犯到您的权益,请主动联系留言,我们将及时删除相关内容。 https://blog.csdn.net/BuladeMian/article/details/89762898
在相关资料1的基础上实现,伤害飘字 特效 跟随 玩家角色。
逻辑图
UIFollowManage
using System.Collections.Generic;
using UnityEngine;
public class UIFollowManage : MonoBehaviour {
[SerializeField]
/// <summary>
///
/// </summary>
public Transform[] list_trans_text;
/// <summary>
///
/// </summary>
public List<Transform> list_tran_follow = new List<Transform>();
#region Singleton
public static UIFollowManage instance;
void Awake()
{
instance = this;
}
#endregion
// Use this for initialization
void Start () {
}
/// <summary>
///
/// </summary>
public void activeFollowUI(string str, Transform _transform,Color color, Sprite sprite)
{
list_tran_follow.Add(_transform);
int k = 0;
for (int i = 0; i< list_tran_follow.Count ;i++)
{
if (list_tran_follow[i] == _transform)
{
k = i;
}
}
if (k < list_trans_text.Length
&& list_trans_text[k] != null
&& list_trans_text[k].GetComponent<UIFollow_New>())
{
list_trans_text[k].GetComponent<UIFollow_New>().avtiveFollowText(str,_transform, color,sprite);
}
}
}
UIFollowControl
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
///
/// </summary>
public class UIFollowControl : MonoBehaviour {
private UIFollowManage uIFollowManage;
/// <summary>
///
/// </summary>
private List<Transform> list_tran_follow = new List<Transform>();
/// <summary>
///
/// </summary>
private Transform[] list_trans_text;
void Start () {
uIFollowManage = UIFollowManage.instance;
}
void Update () {
//followUI();
#region 跟随UI更新
uIFollowManage = UIFollowManage.instance;
list_tran_follow = uIFollowManage.list_tran_follow;
list_trans_text = uIFollowManage.list_trans_text;
if (list_tran_follow.Count >0)
{
for (int i=0; i< list_tran_follow.Count; i++)
{
Vector3 namePos = Camera.main.WorldToScreenPoint(list_tran_follow[i].transform.position);
namePos.z = 0;
list_trans_text[i].transform.localScale = new Vector3(1,1,1);
list_trans_text[i].transform.position = namePos;
}
}
#endregion
}
}
UIFollow_New
using UnityEngine;
using UnityEngine.UI;
public class UIFollow_New : MonoBehaviour {
private Transform transform_;
[SerializeField]
private Image image_icon;
/// <summary>
/// 挂载在 Text实体上
/// </summary>
/// <param name="str"></param>
/// <param name="transform"></param>
/// <param name="color"></param>
/// <param name="sprite"></param>
public void avtiveFollowText(string str,Transform transform, Color color,Sprite sprite)
{
this.transform.localScale = new Vector3(1,1,1);
if (this.GetComponent<Text>()!=null)
{
this.GetComponent<Text>().text = str;
this.GetComponent<Text>().color = color;
}
if (image_icon != null)
{
image_icon.sprite = sprite;
}
}
public void clearAnimation()//Text实体的animation动画中的事件
{
this.transform.localScale = new Vector3(0,0,0);
if (transform_ != null)
{
UIFollowManage.instance.list_tran_follow.Remove(transform_);
}
}
}
当角色受到伤害的时候,调用(UIFollowManage.instance.activeFollowUI(str,this.transform,Color.red,null);)就行了。
currentHealth -= damage;
UIFollowManage.instance.activeFollowUI(str,this.transform,Color.red,null);
如果 同时要 实现 跟多 的 漂浮字 跟随玩家,需要 把 UIFollowManage里面的list_trans_text数组的对象 多添加几个 含有UIFollow_New组件的 Text 实体。
相关资料1里面有 伤害飘字 的实现方法。
相关资料:
1.[Unity][Animation&Animator][特效]伤害飘字
2.
3.