創作內容

20 GP

【筆記】Scriptable Object 基本

作者:樂小呈│2020-05-18 20:19:09│巴幣:40│人氣:1934
ScriptableObject

一種純數據的儲存方式,不包括GameObject和Component,沒有MonoBehaviour的負擔
修改數據時和Prefab一樣,所有引用此ScriptableObject的物件都會連動

建立方式 class 繼承: ScriptableObject
public class Data : ScriptableObject

實例方式 使用CreateAssetMenu前墜,在Project中實例化
[CreateAssetMenu(fileName = "New Data", menuName = "Data")]

------------------------------------------------------------------------------

物件池

純資料的儲存方式,能夠重複使用同一種物件顯示資料,如: 卡牌
在牌庫儲存資料,抽出後再使用顯示用的物件秀出資料
卡牌消耗後,把顯示物件的卡牌資料移除,再給下一張牌顯示使用

------------------------------------------------------------------------------

模組化
把資料拆成多個部分,並用組裝的方式組裝物件;
Boss (BasisData、VisualData、SkillA、SkillB)

組裝
BossA (基本數據A、視覺數據A、技能A、技能C)
BossB (基本數據B、視覺數據A、技能B、技能C)
BossC (基本數據C、視覺數據B、技能C、技能D)

------------------------------------------------------------------------------

繼承和覆寫
使用繼承添加額外參數,使用覆寫的方式更改Function
因為繼承自同一個 class(BasisSkill),所以引用時仍然可以調用(覆寫後的)Function

public class BasisSkill : ScriptableObject
{
    public float skillDuration;
    public virtual void Skill() { }
}

public class DamageSkill : BasisSkill
{
    public int skillDamage;
    public override void Skill() { //Damage to target }
}
public class RegionSkill : BasisSkill
{
    public int skillDamage;
    public override void Skill() { //Damage to region }
}

覆寫這部分在搭配上模組化其實就有不少運用空間了
------------------------------------------------------------------------------

保存資料
在Editor中的RunTime更改ScriptableObjectk的數據,即使離開Runtime也會保留
(所以調用的時候要特別注意)
但Build後就不會保留,關閉後會自動恢復到Build時的資料

------------------------------------------------------------------------------

基本使用的概念就這些,這個筆記是我在實際開始用之前寫的
之後再看有沒有什麼可以補充的進階用法,搭配event、coroutine之類的

至於難度嘛...感覺起來還行,運用範圍就是自己的能力範圍
有點基礎之後就可以學了,算是早學早賺的那種

筆記的資料夾
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4786801
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Unity|筆記

留言共 7 篇留言

筒紙廁
學會這個之前都是用Json來存Class, 要用記事本開起來改數值, 超累orz
一寫錯格式(陣列忘記收尾, 忘記點逗號)還會給你直接爆炸XDD

05-18 20:34

樂小呈
Json...沒做過,但感覺這個我也需要學诶[e26][e26]05-18 21:58
GG
很棒

05-18 21:56

樂小呈
謝謝大大[e12]05-18 21:58
HaoX@ミリシタ
ScriptableObject最elegant的用法應該要屬Unite Austin2017一篇講利用SO建構遊戲架構的演講
今年初Unity有把它整理成官方的how-to 有興趣可以參考看看
https://unity.com/how-to/architect-game-code-scriptable-objects

05-18 23:56

樂小呈
感謝分享[e12]05-19 08:57
kiwi(薇薇安)
完全看不懂耶...
英文好可怕w

05-19 17:19

樂小呈
看不懂應該是因為程式而不是英文 XD05-19 17:31
潘柏爾
ㄏ勝,這小玩意可以做各種雜七雜八的東東

05-20 19:19

樂小呈
努力學習中[e12]05-20 19:23
風格A
恩果然Build後的ScriptableObject是不會保留數值的,之前都靠腦袋記,當初應該要做筆記的。____。

05-21 09:03

樂小呈
現在也可以做筆記啊~~05-21 09:08
樂小呈
想看風格大的筆記,嘿嘿[e6]05-21 09:08
風格A
哦對的,我現在都在寫筆記了。______。之後整理好才會發www

05-21 09:11

樂小呈
期待[e12] 會發小屋嗎?05-21 09:12
我要留言提醒:您尚未登入,請先登入再留言

20喜歡★angus945 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【專案】ACG Baha... 後一篇:【專案】ACG Baha...

追蹤私訊切換新版閱覽

作品資料夾

aaa1357932大家
各位有空可以來我家看看畫作或聽聽我的全創作專輯!看更多我要大聲說7分前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】