using FL.Battle.Buffs; using System.Collections.Generic; using UnityEngine; using XGame.Framework.Map; namespace FL.Map.UI { /// /// TODO 临时代码 /// internal class BattleInfoBuffList : MonoBehaviour { [SerializeField] private BattleInfoBuffListItem _template; [SerializeField] private int _itemLimit = 4; private BattleInfoBuffListItem[] _items; private void Awake() { _items = new BattleInfoBuffListItem[_itemLimit]; } private void OnDisable() { foreach (var item in _items) { if (item == null) break; item.gameObject.SetActive(false); } } public void Refresh(List buffs, MapContext context) { var showCount = Mathf.Clamp(buffs.Count, 0, _itemLimit); for (var i = 0; i < _itemLimit; i++) { var item = _items[i]; if (i < showCount) { // 需要显示 var buff = buffs[i]; if (item == null) { item = GameObject.Instantiate(_template, _template.transform.parent); _items[i] = item; } var loadAsync = context.Asset.LoadAsync(buff.IconName); loadAsync.On(_ => { item.buffIcon.sprite = loadAsync.Result; }); var layers = buff.Layers; item.buffNumTxt.text = layers > 1 ? layers.ToString() : string.Empty; item.gameObject.SetActive(true); } else { // 隐藏 if (item == null) { break; } item.gameObject.SetActive(false); } } } } }