Item飘字
MyPopMsgItem.Instance.ShowMsg(“item=”);
public class MyPopMsgItem : MonoBehaviour
{
private const float START_Y = 130;
public static MyPopMsgItem Instance;
private RectTransform goFather;
void Awake()
{
if (Instance == null)
Instance = this;
goFather = GameObject.Find("PopMsg").GetComponent<RectTransform>();
showingPopGOS = new List<GameObject>();
noShowPopGOS = new List<GameObject>();
}
/// <summary> 正在显示的飘字数组 </summary>
public List<GameObject> showingPopGOS;
/// <summary> 没有显示飘字数组 </summary>
public List<GameObject> noShowPopGOS;
/// <summary> 飘字组件节点 </summary>
public GameObject msgItemPerfab;
private IEnumerator ISetActiveList()
{
yield return new WaitForSeconds(3);
showingPopGOS[0].SetActive(false);
noShowPopGOS.Add(showingPopGOS[0]);
showingPopGOS.RemoveAt(0);
}
/// <summary> 显示系统飘字 </summary>
public void ShowMsg(string msg)
{
if (showingPopGOS.Count > 0)
{
for (int i = 0; i < showingPopGOS.Count; i++)
{
var tr = showingPopGOS[i].GetComponent<RectTransform>();
tr.localPosition = new Vector3(0, START_Y + (showingPopGOS.Count - i) * 45, 0);
}
}
ShowMsgItem(msg);//生成
}
/// <summary> 显示单条飘字 </summary>
private void ShowMsgItem(string msg)
{
GameObject msgItem = null;
if (noShowPopGOS.Count > 0)
{
msgItem = noShowPopGOS[0];
noShowPopGOS.RemoveAt(0);
msgItem.SetActive(true);
}
else
{
msgItem = Instantiate(msgItemPerfab);
}
showingPopGOS.Add(msgItem);
var img = msgItem.GetComponent<Image>();
var text = msgItem.GetComponentInChildren<Text>();
img.color = new Color(1, 1, 1, 0);
text.color = new Color(1, 1, 1, 0);
text.text = msg;
var imageRT = msgItem.GetComponent<RectTransform>();
imageRT.SetParent(goFather);
imageRT.localScale = Vector3.one;
imageRT.localPosition = new Vector3(0, START_Y, 0);
img.DOColor(new Color(1, 1, 1, 1), 0.3f);
text.DOColor(new Color(0.51f, 0.21f, 0.91f, 1), 0.3f);
StartCoroutine(ISetActiveList());
}
}