使用FGUI 播报对局中击杀信息,当上一个信息时间到时,在显示下一个
时间: 2024-03-09 14:50:51 浏览: 57
要实现在上一个击杀信息播报完毕后再显示下一个击杀信息,可以在代码中使用协程来实现。以下是一个简单的示例代码:
```
using UnityEngine;
using FairyGUI;
public class KillInfoPanel : MonoBehaviour
{
private GComponent _mainView;
private GList _killList;
void Start()
{
_mainView = this.GetComponent<UIPanel>().ui;
_killList = _mainView.GetChild("killList").asList;
// 监听击杀事件
GameEventManager.Instance.AddListener(GameEventType.Kill, OnKill);
}
void OnDestroy()
{
GameEventManager.Instance.RemoveListener(GameEventType.Kill, OnKill);
}
private void OnKill(GameEvent evt)
{
// 获取击杀信息
string killerName = evt.GetParam<string>(0);
string victimName = evt.GetParam<string>(1);
// 在列表中添加新的击杀信息
_killList.AddItem(killerName + " killed " + victimName);
// 播放列表中的所有击杀信息
StartCoroutine(PlayKillList());
}
private IEnumerator PlayKillList()
{
// 等待上一个击杀信息播报完毕
yield return new WaitForSeconds(2f);
// 按照顺序播放列表中的所有击杀信息
for (int i = 0; i < _killList.numItems; i++)
{
_killList.GetChildAt(i).TweenFade(1, 0.5f).OnComplete(() =>
{
_killList.GetChildAt(i).TweenFade(0, 0.5f);
});
// 等待一段时间后再播放下一个击杀信息
yield return new WaitForSeconds(2f);
}
}
}
```
这段代码在OnKill函数中使用了协程来播放击杀信息。在播放击杀信息之前,它会等待上一个击杀信息播报完毕,以确保击杀信息不会重叠。然后,它按照顺序播放列表中的所有击杀信息,并在每个击杀信息播放完毕后等待一段时间再播放下一个击杀信息。在播放击杀信息时,它会将每个击杀信息渐隐渐现地显示出来,然后再渐隐消失。
阅读全文