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之類的
至於難度嘛...感覺起來還行,運用範圍就是自己的能力範圍
有點基礎之後就可以學了,算是早學早賺的那種
筆記的資料夾