Unite 2017-Scriptable Object (二)
事件架構(gòu)
有一個(gè)這樣的事件系統(tǒng)有幾大好處:
可復(fù)用在任何項(xiàng)目中
獨(dú)立了預(yù)制體
需要時(shí)才執(zhí)行
便于調(diào)試
GameEventListener
運(yùn)行時(shí)參數(shù)
現(xiàn)在依然有些單例下遇到的問題:
比如一個(gè)敵人管理器,管理了所有的敵人對象,他便要負(fù)責(zé)去追蹤所有敵人對象
比如Player對象,以及要獲取其追蹤的敵人列表
造成的結(jié)果:
Race Condition(資源競爭)
極大可能會出現(xiàn)的一種情況便是,資源會被競爭,某些地方未被初始化時(shí)便被調(diào)用,最終導(dǎo)致獲得空引用
Rigid singleton(剛性引用)
在制作測試場景的時(shí)候,需要把全部引用全都加入進(jìn)來。
因此使用SO制作運(yùn)行時(shí)類,可以解決上述問題。
別過多的使用Enum變量
因?yàn)槊杜e要在程序里做修改,因此我們動(dòng)的程序部分越少,也就越不容易出錯(cuò)
很難做序列化操作,排序等操作。
很難保存一些額外信息
Asset Base System
設(shè)計(jì)原則:
系統(tǒng)在程序中,以So的方式在制作系統(tǒng)
可以直接拖拽引用到Inspector上
不需要代碼重復(fù)檢查
不要有直接綁定到場景上的引用。

標(biāo)簽: