void Start() { headWidget.onDestroy.AddListener(() => { if (commonWidgets.Count == 0) { headWidget.Destroy(); onDestroy?.Invoke(); Destroy(gameObject, .5f); } else { headWidget.SetMsg(commonWidgets.First.Value.msg); headWidget.Resize((transform.parent as RectTransform).rect.width - widthOffset); Destroy(commonWidgets.First.Value.gameObject); commonWidgets.RemoveFirst(); } }); }
public void AddMessage(Message msg) { if (msg.owner != owner) { return; } MessageWidget newWidget = Instantiate(common.gameObject, content).GetComponent <MessageWidget>(); newWidget.SetUp(headWidget.msg); newWidget.onDestroy.AddListener(() => { commonWidgets.Remove(newWidget); newWidget.Destroy(); }); commonWidgets.AddLast(newWidget); headWidget.SetUp(msg); headWidget.Resize((transform.parent as RectTransform).rect.width - widthOffset); headWidget.transform.SetAsLastSibling(); }