NoticeItem
Coding Style wiki
NoticeItem 是掛載於紅點圖示 (ICON) 上的通知物件組件 (MonoBehaviour),持有條件 ID 與數據 (NoticeInfo) 的註冊,當持有的任一條件符合時自動顯示自身 GameObject;可透過 Package Manager -> Samples 匯入 NoticeItem Prefab 拖曳至 UI 上直接使用,亦可透過 Add Component -> OxGKit -> NoticeSystem -> NoticeItem 自行掛載。
| 命名空間 | OxGKit.NoticeSystem |
| 類型 | [DisallowMultipleComponent] public class NoticeItem : MonoBehaviour |
| 原始碼 | NoticeItem.cs |
using OxGKit.NoticeSystem;
快速上手
using OxGKit.NoticeSystem;
using UnityEngine;
public class MailUI : MonoBehaviour
{
// 將 NoticeItem prefab 拖曳至 UI 上,再指定引用
public NoticeItem mailNoticeItem;
private MailBox _mailBox = new MailBox();
private void Awake()
{
// 註冊條件與數據 (註冊時會自動檢查條件並刷新顯示)
this.mailNoticeItem.RegisterNotice
(
new NoticeInfo(NewMailCond.id, this._mailBox)
);
}
public void ReceiveMail()
{
// 數據變更後,通知刷新紅點顯示
this._mailBox.unreadCount++;
this.mailNoticeItem.Notify();
}
}
通用規則
顯示規則
- 單一 NoticeItem 可持有多個條件,持有的任一條件符合 (
ShowCondition回傳true) 則顯示自身 GameObject,皆不符合則隱藏 (OR 邏輯)。
重要 NoticeItem 切換的是自身 GameObject 的顯示,因此紅點應為按鈕底下的子物件圖示節點,不要直接掛在按鈕本身,否則按鈕會跟著被隱藏。
提醒 若需 AND 邏輯,將整組判斷寫在同一個條件類的 ShowCondition 中即可。
自動註銷
注意 當 NoticeItem OnDestroy 時,會自動 DeregisterNotice 註銷自身全部持有條件。
提醒 物件池 (Pooled UI) 回收時不會觸發 OnDestroy,需自行呼叫 DeregisterNotice 避免殘留註冊。
數值類型數據
重要 NoticeInfo.data 對數值類型 (Value Type) 數據 (如 int) 儲存的是快照,數據變更後必須透過 RenewNotice 更新數據再 Notify;參考類型 (Reference Type) 則持有引用,變更後僅需 Notify。