public void Awake() { mTrans = transform; mRectTrans = GetComponent <RectTransform>(); // 通过配置获取可显示的最大buff数量 mBuffMaxCount = GameConstHelper.GetInt("GAME_BUFF_MAX_COUNT"); if (mBuffMaxCount == 0) { mBuffMaxCount = 5; } mBuffWidgets = new BuffWidget[mBuffMaxCount]; // 获取所有buff显示的控件 for (int i = 0; i < mBuffMaxCount; ++i) { Transform trans = mTrans.Find(string.Format("Buff{0}", i)); var buffWidget = new BuffWidget(); buffWidget.WidgetObject = trans.gameObject; buffWidget.BuffImage = trans.Find("BuffTex").GetComponent <RawImage>(); mBuffWidgets[i] = buffWidget; } mBuffIds = new List <uint>(); }
private void Update() { var removed = new List <int>(widgets.Keys); var layout = new GridLayout(); int i = 0; foreach (var buff in session.Buffs) { if (!buff.IsMajor) { continue; } BuffWidget widget; if (widgets.TryGetValue(buff.Id, out widget)) { removed.Remove(buff.Id); } else { widget = new BuffWidget(this); widgets[buff.Id] = widget; } widget.Buff = buff; layout.SetColumnWidth(i, cframe.Width); layout.AddWidget(widget, 0, i); if (++i >= 5) { break; } } foreach (var id in removed) { var widget = widgets[id]; widget.Dispose(); widget.Remove(); widgets.Remove(id); } layout.Spacing = Spacing; layout.UpdateGeometry(0, 0, 0, 0); }