Turn Based RPG Game Wiki - UAVisonline/Portfolio GitHub Wiki
ν΄λΉ κ²μμ κ΅μ κ³Όλͺ© : λͺ¨λ°μΌκ²μνλ‘κ·Έλλ°μ λν νκΈ° κ³Όμ λ‘ μ μν νλ‘μ νΈμ΄λ€. κ²μμ λ€μν νΉμ±μ μ»κ³ μ΄λ₯Ό κ·Ήλννλ λ°©ν₯μΌλ‘ μΊλ¦ν°λ₯Ό μ‘μ±νλ λ°©μμΌλ‘ μ§νλλ©°, ν΄μ μ ν¬λ₯Ό μ§ννλ κ²μΌλ‘ μ¬μ©μλ μμ μ μΊλ¦ν°κ° ν¨κ³Όμ μΌλ‘ μ‘μ±νλμ§ νμΈν μ μμΌλ©° μ΄λ¬ν κ³Όμ μμμ μ¬λ―Έλ₯Ό μ»λ κ²μ λͺ©νλ‘ νκ³ μλ€.
ν΄λΉ νλ‘μ νΈλ 2022λ 10μλΆν° κΈ°ν λ° μ μμ μ§ννμμΌλ©° 2022λ 12μ κ°λ° μλ£, μ΄λ₯Ό λ°ννλκ²μΌλ‘ μλ£λ νλ‘μ νΈμ΄λ€.
κ²μ λ΄ κ·Έλν½ λ° μμ νμΌμ μ΄μ μ ꡬ맀νλ Assetμ νμ©νλ λ°©μμΌλ‘ ν΄κ²°νμμΌλ©°, κ·Έ μΈ λΆλΆμ μ§μ μ μνλ λ°©μμΌλ‘ νλ‘μ νΈ κ°λ°μ μ§ννμλ€.
ν΄λΉ μν€μμλ νλ‘μ νΈμ λν΄ μλμ κ°μ νλͺ©λ€μ ν΅ν΄μ μ€λͺ νκ³ μ νλ€.
-
Observer ν¨ν΄μ ν΅ν νΉμ± ꡬν λ° λ°λ
-
κ²μ λ΄ μμ΄ν λ° μΈλ²€ν 리 μμ€ν μ μ
-
ν΄μ μ ν¬ λ° μ μ λν ꡬν
κ·Έλ¦¬κ³ νλ‘μ νΈ λ΄μλ 20κ°μ΄μ κ³ μ νΉμ±λ€μ΄ μ‘΄μ¬νλλ°, μ΄λ₯Ό μ΄λ»κ² ꡬννμλμ§ μλ μνλͺ© 2κ°λ₯Ό ν΅ν΄ μ€λͺ νκ³ μ νλ€.
ν΄λΉ κ²μ λ΄ νΉμ±μ νλ μ΄μ΄μκ² νΉλ³ν λ₯λ ₯μ λΆμ¬νκ±°λ, 곡격λ ₯ λ° λ°©μ΄λ ₯κ³Ό κ°μ νΉμ μμΉλ₯Ό μ¬λ¦¬λ μμΌλ‘ μλνλ€. λν μ΄λ¬ν νΉμ±λ€μ νλνλ μ¦μ λ°λλκ±°λ, νΉμ νμ΄λ°λ§λ€ λ°λμ΄ λλ μμΌλ‘ μ΄λ£¨μ΄μ§λ€.
μ΄λ¬ν λΆλΆμ κ³ λ €ν κ²°κ³Ό, λͺ¨λ νΉμ±λ€μ μλμ κ°μ μμ± λ° κΈ°λ₯μ 곡μ νκ² λλ©° μ΄λ₯Ό μλ BaseAmuletScriptλ‘ μ μνμλ€.
BaseAmuletScript
μμ±
νΉμ±μ λν μ 보 : μ½λ, μ΄λ¦, μ€λͺ
λ¬Έ, μ΄λ―Έμ§, μμ§μ νμ«μ (Unity ScriptableObjectλ‘ κ΄λ¦¬)
ν΄λΉ νΉμ±μ΄ λ°λλ μν© (enum μ΄κ±°μ²΄λ‘ κ΄λ¦¬ : 9κ°μ§ κ°μΌλ‘ μ μ)
κΈ°λ₯ (μ λΆ κ°μν¨μλ‘ μ€μ )
νΉμ±νλ ν¨μ (OnAcquire) : νλ μ΄μ΄μκ² ν΄λΉ νΉμ±μ μλ‘ μ»μμμ μλ €μ€
νΉμ±μλ©Έ ν¨μ (OnDismiss) : νλ μ΄μ΄κ° ν΄λΉ νΉμ±μ μμ΄λ²λ Έλ€λ κ²μ μλ €μ€
νΉμ±κΈ°λ₯ ν¨μ (OnFunction) : νΉμ± μ체μ κΈ°λ₯μ΄ μμ λ ν¨μ (μΈμλ‘ enum λ³μλ₯Ό λ°μ)
κ·Έ μΈ Unityμμ κΈ°λ³Έ μ§μνλ MonoBehaviourν΄λμ€μ OnEnable(μ€λΈμ νΈ μμ± μ μλ λ°λ)ν¨μλ₯Ό μ΄μ©νμ¬ μμ§ν μ¬λ¬ νΉμ±λ€μ κ΄λ¦¬νλ κ²μ΄ κ°λ₯νλ€. (μ΄λ μλ 1-2λ² νλͺ©μμ μμΈν μμ νλ€)
μ λΆλͺ¨ ν΄λμ€λ₯Ό μμνμ¬ μμ ν΄λμ€λ₯Ό λ§λ€κ³ , μμ±κ°μ μλ‘ ν λΉνλ κ² λ° κ°μν¨μλ₯Ό μ€λ²λΌμ΄λ©νλ κ²μΌλ‘ μλ 2κ°μ§ Scriptμ κ°μ΄ μνλ νΉμ±μ ꡬνν μ μλ€.
public class Amulet_002 : BaseAmuletScript (002λ² νΉμ± : νλ μ¦μ λ°λλλ©° λ€μ λ°λλμ§ μμ)
{
public override void OnAcquire() [λΆλͺ¨ν΄λμ€μ OnAcquire ν¨μλ₯Ό μ€λ²λΌμ΄λ©ν¨ -> νλ μ¦μ μλ λ΄μ©μ μ€ν]
{
PlayerManager.playerManager.spec.amulet_max_hp += 25; [νλ μ΄μ΄μ 체λ ₯ μ΅λμΉλ₯Ό 25 μ¬λ¦°λ€]
base.OnAcquire(); [λΆλͺ¨ν΄λμ€ OnAcquireλ λ°λνμ¬ νλ μ΄μ΄κ° ν΄λΉ νΉμ±μ μλ‘ μ»μμμ κ³ μ§]
}
public override void OnDismiss() [λΆλͺ¨ν΄λμ€μ OnDismiss ν¨μλ₯Ό μ€λ²λΌμ΄λ©ν¨ -> νΉμ±μ μμ΄λ²λ¦¬λ κ²½μ° μλ λ΄μ©μ μ€ν]
{
PlayerManager.playerManager.spec.amulet_max_hp -= 25; [νλ μ΄μ΄ 체λ ₯ μ΅λμΉλ₯Ό 25 λ΄λ¦°λ€]
base.OnDismiss(); [λΆλͺ¨ν΄λμ€ OnDismissλ λ°λνμ¬ ν΄λΉ νΉμ±μ μμ΄λ²λ Έμμ κ³ μ§]
}
} => νλ μ΄μ΄μ 체λ ₯ μ΅λμΉλ₯Ό 25λ§νΌ μ¦μ μ¬λ¦¬λ νΉμ±
public class Amulet_048 : BaseAmuletScript (048λ² νΉμ± : νΉμ νμ΄λ°μ΄ μ¬ λλ§λ€ λ°λλλ κ²½μ°)
{
public override void OnFunction(Amulet_timing timing) [μ΄κ±°μ²΄ λ³μμΈ timingμ μΈμλ‘ λ°μμ΄]
{
if (timing == Amulet_timing.after_attack) [μΈμκ° κ³΅κ²©ν μ΄κ±°μ²΄μ κ°μ κ²½μ°]
{
if(DungeonManager.dungeonManager.ret_player_attack() == attack_type.physical) [νλ μ΄μ΄μ κ³΅κ²©μ΄ λ¬Όλ¦¬κ³΅κ²©μΈ κ²½μ°]
{
int value = DungeonManager.dungeonManager.ret_current_damage(); [νμ¬ λ°λ―Έμ§ μμΉλ₯Ό λ°μμ΄]
value = Mathf.RoundToInt(value * 0.03f); [μ¬κΈ°μ λν΄ 0.03μ κ³±ν¨]
if(value <= 0) [μ κ°μ΄ 0μ΄νμ΄λ©΄]
{
value = Random.Range(0, 2); [κ°μ 0~2μμ λλ€μΌλ‘ λ§μΆ€]
}
DungeonManager.dungeonManager.heal_player_fixed(value); [valueκ° λ§νΌ 체λ ₯μ ν볡]
}
}
}
} => (νλ μ΄μ΄κ° μ μκ² λ¬Όλ¦¬κ³΅κ²©μ ν κ²½μ°, λ°λ―Έμ§μμΉμ 3%λ§νΌ 체λ ₯μ ν볡νλ λ₯λ ₯μ κ°μ§ νΉμ±μ μ μ)
2. μλ§μ νΉμ±μ μ΄λ»κ² κ΄λ¦¬νκ³ λ°λμν¬ κ²μΈκ°? (Observerν¨ν΄μ ν΅ν subscribe/publish)
κ²μ λ΄ μ»μ λͺ¨λ κ³ μ νΉμ±μ νλ μ΄μ΄λ νΉμ μν©μ μν΄ κ΄λ¦¬ν μ μμ΄μΌ νλ©°, μ΄λ₯Ό μν΄μλ μλ 3κ°μ§ κΈ°λ₯μ΄ νλ μ΄μ΄ λ΄ κ΅¬νλμ΄μΌ νλ€.
(1) νΉμ±λ±λ‘μμ : κ²μ λ΄μμ μλ‘ νλν νΉμ±μ νλ μ΄μ΄κ° κ΄λ¦¬ κ°λ₯ν μνλ‘ λ§λλ μμ
(2) νΉμ±ν΄μ μμ : λ μ΄μ μ¬μ©ν μ μλ νΉμ±μ λν΄ κ΄λ¦¬ λΆκ°λ₯ν μνλ‘ λ§λλ μμ
(3) νΉμ±λμμμ : νλ μ΄μ΄κ° μμ ν νΉμ± μ€ μΌλΆ νΉμ±λ€λ§ λμνλλ‘ νλ μμ
μ΄λ¬ν μμ μ νλ μ΄μ΄μ λν μ 보λ₯Ό κ΄λ¦¬νλ PlayerManager μ½λ λ΄ Observer ν¨ν΄λ‘ ꡬνλμμΌλ©°, ν μ€ν¬λ¦½νΈλ PlayerManagerμ μ κ·Όν΄ νΉμ ν¨μλ₯Ό μ€ννλ κ²μΌλ‘ μ μμ μ μ€νν μ μλ€.
-
νΉμ± λ±λ‘ [insert_amulet λ° insert_detail_amulet ν¨μ]
-
νΉμ± ν΄μ [dismiss_amulet λ° dismiss_detail_amulet ν¨μ]
-
νΉμ± λμ [function_amulet ν¨μ]