์๋๊ฐ CharacterManager ์คํฌ๋ฆฝํธ์ ๋๋ค.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterManager : Actor
{
ย ย BaseAction _nowAction; ์ฌ๊ธฐ ๋ถ๋ถ์์ ํ๋์ ํ ๋น์ด ์๋๋ฏ๋ก ํญ์ null ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง๋๋ค๋ผ๋ ๊ฒฝ๊ณ ๋ฉ์ธ์ง๊ฐ ๋น๋๋คย ย ย ย ย
ย ย public override void MovingCheck(Vector3 moveDir) =>ย
ย ย ย ย _nowAction.CheckMoveDir(moveDir);
ย ย public override void OnNormalAtk(ActorController.InputKey key, ActorController.InputState state) =>
ย ย ย ย _nowAction.CheckInputKeys(key, state);
ย ย public override void OnDodge(ActorController.InputKey key, ActorController.InputState state) =>
ย ย ย ย _nowAction.CheckInputKeys(key, state);
ย ย public void ChangeAction(string name) => _nowAction.ChangeAction(name);
ย ย void Update()
ย ย {
ย ย ย ย ย
ย ย }
}
๊ทธ๋ฆฌ๊ณ ์ด๊ฒย Actorย ์คํฌ๋ฆฝํธ ์ ๋๋ค
public class Actor : MonoBehaviour
{
ย ย public virtual void MovingCheck(Vector3 moveDir) { }
ย ย public virtual void OnNormalAtk(ActorController.InputKey key, ActorController.InputState state) { }
ย ย public virtual void OnDodge(ActorController.InputKey key, ActorController.InputState state) { }
}
์ฐ์ BaseAction์ abstract ์ถ์ํด๋์ค ์ ๋๋ค.
์ฌ๊ธฐ์ ๊ถ๊ธํ์ ์ด ์ ย BaseAction _nowAction; ์ด ๋ถ๋ถ ์ด๊ธฐํ๋ฅผ ํด์ค๋ ค๊ณ ํ๋๋ฐ start์ new๋ฅผ ํ๋ฉด ์๋๋๊ฑด๊ฐ์??
์ ์ค๋ฅ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผ ํ๋์?
์ถ์ํด๋์ค๋ ์ธ์คํด์คํ ํ ์ ์์ต๋๋ค
BaseAction์ด ์ด๋ค ์ญํ ์ ํ๋์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ ์์์ ํด์ผ ํ๋ ํด๋์ค ์ธ๊ฐ์?
BaseAction์ ์๋ ํจ์๋ค์ ๊ฐ์ ธ์์ ๊ฐ์ BaseAction์ผ๋ก ๋ณด๋ผ๋ ค๊ณ ํฉ๋๋ค
BaseAction์ ์์ํด์ ์ฌ์ฉํ๋ฉด ์๋๋ ๊ฑด๊ฐ์?
๋ณด์๋ฉด BaseAction์ ์์ํ๊ธฐ ์ ์ ์ด๋ฏธ Actor๋ฅผ ์์๋ฐ๊ณ ์์ต๋๋ค ใ ใ