優點:
1.unity內置的壹種儲存容器(不用作為組件掛載在物體上,也可以被序列化)
2.可以以asset形式儲存(不需要其他額外的文件解析轉換之類的,同時可跨項目使用)
3.可以在PlayMode儲存數據更改(再也不怕更改數據沒保存了)
4.可以儲存大量數據(其他對象都可以調用,有效避免產生冗余數據,這壹點太有用了)
5.可以添加引用到腳本中
缺點:
1.需要擴展Editor
2.不可以在unity外操作
3.這是用來儲存開發數據的,而不是儲存玩家數據的。
什麽時候用?
1.就如優點所展示的那樣,當有壹些數據被同時大量使用,為了避免數據冗余,可以使用。同時應該註意,因物而異的變量不應該聲明在此處。
2.作為唯壹的資源交給版本控制器。例如,本地化數據、清單目錄、表格、敵人配置等
3.ScriptableObject除了可以存儲數據外,我們還可以在ScriptableObject中定義壹些方法。。這類似於插槽設計模式,ScriptableObject提供壹些槽,MonoBehaviour可以把自己插進去。適用於AI類型、回血的buff或debuffs等(回血例子見結尾)
如何實現?
step1.創建妳用於***享數據的類(例如EnemyData)
step2.新建壹個腳本擴展Editor,使編輯器能夠創建自定義的ScriptableObject對象
step3. 在需要引用的腳本中引用
另外註意:每次新建項名稱都相同,這意味著不及時改名就會被覆蓋。請及時歸類或重命名
到第三步為止,是 ScriptableObject最基礎的用法,或許它的優點還不明顯,接下來再舉例第四步
further step. 創建區域化控制腳本(可以是GameManager這種)
回血buff例子