Prison Life๋ ๊ด์ ์ฑ๊ตด๋ถํฐ ์๊ฐ์ ์์ฉ๊น์ง ์๋ํ๋๋ Ad_Dev ๊ฒ์์ ๋๋ค. ์ํผ์ผํธ Ad-Dev ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์(์ธํด) ์ฑ์ฉ ๊ณผ์ ๋ก 1์ฃผ์ผ ์์ ๊ฐ๋ฐํ์ต๋๋ค.
ํ๋ซํผ: Unity 2022.3 LTS (PC)
๊ฐ๋ฐ ๊ธฐ๊ฐ: ์ฝ 1์ฃผ์ผ
ํ ๊ตฌ์ฑ: 1์ธ ๊ฐ๋ฐ
๐น ํฌํธํด๋ฆฌ์ค ์์ : https://youtu.be/eDnIBZUNspc
๐ GitHub : https://github.com/SongJiUk/AssignmentGame
๊ด๋ถ๊ฐ ๊ด์์ ์ฑ๊ตด โ ๊ด์์ ์๊ฐ์ผ๋ก ์ ์ โ ๊ฐ๋ถ๊ฐ ์๊ฐ์ ์๊ฐ์ ๊ตฌ์ญ์ผ๋ก ์ฐ๋ฐ โ ์๊ฐ์ ์์ฉ์ผ๋ก ์์ ๋ฐ์ โ ๋ฌด๊ธฐ ์ ๊ทธ๋ ์ด๋ / ๊ด๋ถยท๊ฐ๋ถ ๊ณ ์ฉ์ผ๋ก ์๋ํ ํ์ฅ โ ๊ฐ์ฅ ์ ์์ด ๊ฐ๋ ์ฐผ ๋ ๊ฐ์ฅ ์ ๊ทธ๋ ์ด๋ (์์ฉ ์ธ์ ์ฆ๊ฐ)
๊ฐ๋ถ(Jailer)๋ ์๊ฐ์ด ์์ผ ๋๊น์ง ๋๊ธฐ โ ์๊ฐ์ ๊ตฌ์ญ์ผ๋ก ์ด๋ โ ์ ๋ฌ ์๋ฃ ํ ๋ฐ๋ณต. ์ฝ๋ฃจํด ์์ด UniTask async/await ํจํด์ผ๋ก ๊ตฌํํ์ต๋๋ค.
async UniTaskVoid AsyncWalkJailer()
{
while (true)
{
if (handCuffStack.Count == 0)
{
await AsyncMoveToPosition(handCuffZone.transform.position);
await UniTask.WaitUntil(() => handCuffStack.Count >= HandCuffLine);
}
await AsyncMoveToPosition(prisonerZone.transform.position);
await UniTask.WaitUntil(() => handCuffStack.Count == 0);
await UniTask.WaitUntil(() => prisonerZone.HandCuffCount == 0);
}
}
์๊ฐ์ ์ฃผ๋ ์ชฝ(IHandCuffGiver)๊ณผ ๋ฐ๋ ์ชฝ(IHandCuffReceiver)์ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌํด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ท์ต๋๋ค.
public interface IHandCuffGiver
{
void GiveHandCuff(IHandCuffReceiver receiver);
}
public interface IHandCuffReceiver
{
void ReceiveHandCuff(int amount);
}