Developer G
Students
1,079
Reviews
71
Rating
4.7
์๋ ํ์ธ์, ๊ฒ์์ ์ฌ๋ํ๊ณ ๊ฐ๋ฐ์ ์ฌ๋ํ๋ ๊ฒ์ ํ๋ก๊ทธ๋๋จธ Developer G์ ๋๋ค.
์ ๋ ์ด๋ป๊ฒํ๋ฉด ๊น๋ํ๊ณ ์ฒด๊ณ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์์ง ํญ์ ๊ณ ๋ฏผํ๋๋ฐ์,
์ ๊ณ ๋ฏผ์ ๊ฒฐ๊ณผ๋ฌผ๋ค์ ์ฌ๋ฌ๋ถ๋ค์๊ฒ ์๋์์ด ๊ฐ๋ฅด์ณ๋๋ฆฌ๊ฒ ์ต๋๋ค!
Courses
Reviews
- [Unity Level Up!] Modular Item System
- [Unity Level Up!] Modularly Developing Skill System
- [Unity Level Up!] Quest & Achievement System Developed Modularly
- [Unity Level Up!] Quest & Achievement System Developed Modularly
- [Unity Level Up!] Modularly Developing Skill System
Posts
Q&A
์๋ ํ์ธ์ ๊ฐ์ข ์งํ ์์์ ๋ํด ๋ฌธ์๋๋ฆฝ๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.๋์ด๋๋ ํ์คํธ -> ์์ดํ -> ์คํฌ ์์ผ๋ก ์ด๋ ค์์ง๋๋ค.ํ์คํธ (๊ธฐ์ด)์์ดํ (๊ธฐ๋ณธ)์คํฌ (์ฌํ)์ ๋๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.๊ฐ์ฌ๋๋๋ค.
- 0
- 1
- 19
Q&A
TargetSearcher์ ๋ํด์ ์ง๋ฌธ์ด ์์ต๋๋ค
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.1. ๊ฐ์ ๋ด์ฉ์ ์ฝ๋งค์ด์ค ํ์ ์์ต๋๋ค. ๊ธฐ์ค์ ์ด ์ฌ๋ฌ ๊ฐ๊ฐ ํ์ํ๋ค๋ฉด TargetSelectionResult๋ฅผ ์์ ํ์ ์ ๊ฐ ๋ณ์๋ฅผ ๋ฐฐ์ด ํํ๋ก ๋ง๋์๋ฉด ๋ฉ๋๋ค. Simple is best, ๋๊ฒ ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ์์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ์์ ๋๋ค.2. ์ ๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ๋ฅ ๊ตฌํ์ ํ๋ค ๋งํ๋ฉด ์ ๊ฐ ๋ง๋๋ ค๊ณ ํ๋ ํ๋ ๊ธฐ๋ฅ๋ค์ด ์๋ ๊ฒ์๋ค์ ์ดํด๋ด ๋๋ค. ๋๋ฌด ํน์ดํด์ ๋ฑ ๋ง๋ ์์ ๊ฐ ์์ ๊ฒฝ์ฐ์๋ ๋น์ทํ ์์ ๋ผ๋ ์ฐพ์๋ด ๋๋ค. ์๋ฅผ ๋ค์ด, '์ด๋ค' ์คํฌ์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋กค ๊ฐ์ด ๊ทธ ์คํฌ์ด ์๋ ๊ฒ์์ ํด๋ณด๋ฉด์ ๊ทธ ์คํฌ์ด ์ด๋ค ์์ผ๋ก ๋์ํ๋์ง ๋ฐ๋ณตํด์ ๋ณด๊ตฌ์, ๊ทธ๋ฌ๋ฉด์ ๋จธ๋ฆฌ ์์ผ๋ก ๊ฐ ๋์์ ์ด๋ป๊ฒ ๊ตฌํํ ์ง ๊ณ์ ์ค๊ณ๋ฅผ ํฉ๋๋ค. "๋ฆฌ์ Q๋ ํฌ์ฌ์ฒด๋ค", Q๋ฅผ ๋ง์ ์ ์ ๋จธ๋ฆฌ์ ๋ญ๊ฐ ๋จ๋ค? ์ด๊ฑด ๋๋ฒํ ํจ๊ณผ๋ก ์ฒ๋ฆฌํด์ผ๊ฒ ๋ค", "Q๋ฅผ ํ๋ฒ ๋ ๋๋ฅด๋ฉด ๋จธ๋ฆฌ์ ๋ญ๊ฐ ๋ฌ ์ ํํ ๋ ์๊ฐ๋ค? ์...์ด๊ฑด ์คํฌ์ ๋ฐ๋ ์กฐ๊ฑด์ผ๋ก '๋๋ฒํ๊ฐ ์์ ๋'๋ฅผ ๋ฃ์ด์ผ๊ฒ ๋ค." ์ด๋ฐ ์์ ๋๋ค. ์๋ฌด๋๋ ๋ง์ฐํ ์๊ฐํ๋ ๊ฒ๋ณด๋ค๋ ๋์ ๋ญ๊ฐ ๋ณด์ด๋ฉด ํจ์ฌ ์๊ฐํ๊ธฐ ์ฌ์ฐ๋๊น์. ๊ทธ๋์ ๋ง์ ๊ฒ์์ ํด๋ณด๋ฉด์ ๋ ํผ๋ฐ์ค ์๋๊ฒ ์ค์ํ๊ตฌ์, ๊ฒ์ ํ๋ก๊ทธ๋๋จธ๋ค์ ํํ ์ง์ ๋ณ์ผ๋ก ๊ฒ์์ ํ๋ค ๋ง๊ณ "์ด๊ฑฐ ์ด๋ป๊ฒ ๊ตฌํํ์๊น?"ํ๊ณ ๊ธฐ๋ฅ์ ๋ฐ๋ผ๋ณด๋ฉฐ ๋จธ๋ฆฌ ์์ผ๋ก ์ค๊ณ๋ฅผ ํด๋ณด๋๊ฒ ์์ต๋๋ค.๊ทธ ์ธ์ ์์ฆ์ ํ์ฌ๋ค์์ AI๋ฅผ ํ์ด ํ๋ก๊ทธ๋๋จธ๋ก ๋๋๊ฑธ ๊ถ์ฅํ๊ธฐ ๋๋ฌธ์ ์ ๋ AI์ ๋ํ๋ฅผ ๋ง์ด ๋๋๋ ํธ์ ๋๋ค. AI๊ฐ ์ ๋๋ก ๋ต๋ณํ๋ ์๋ชป ๋ต๋ณํ๋ ๋ํ๋ฅผ ํ๋ ๊ณผ์ ์์ ์๊ฐ์ด ์ ๋ฆฌ๋๊ฑฐ๋ ์.
- 0
- 1
- 23
Q&A
์นดํ ๊ณ ๋ฆฌ ํด๋์ค๋ฅผ ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ใ ใ
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.๋ต๋ณ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค.1. Quest์ Task๊ฐ IdentifiedObject๋ฅผ ์์ ๋ฐ๋ ํํ๋ก ๊ตฌํํ์๋ฉด ๋ฉ๋๋ค. ๊ทธ ๋ค์์ Quest์ Task๋ฅผ ItemSystemWindow์ ๋ฑ๋กํด์ฃผ๋ฉด ๋ฉ๋๋ค.2. Equals์ GetHashCode ํจ์๋ฅผ ๊ตฌํํ ์ด์ ๋ operator ==์ ๊ตฌํํ๊ธฐ ์ํ ํ์ ๊ตฌํ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 35
Q&A
NPOI ์ค๋ฅ๊ฐ ๋จ๋๋ฐ
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค, ๊ทธ๋ฆฌ๊ณ ๋ต๋ณ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค.๊ฐ์์์ ์ค๋ช ๋๋ ธ๋ค์ถ์ด NPOI DLL์ Editor์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ ์ค์ ํด๋์ Build์์ NPOI๋ฅผ ์ฐธ์กฐํ์ง ์๊ธฐ์ TestCode๋ค์ด ์ฐธ์กฐ๊ฐ ์์ด Error๋ฅผ ๋ฑ๋ ๊ฒ์ ๋๋ค.ExcelConvertTest.cs์ NPOIExample.cs์ ๋ด์ฉ์ #if UNITY_EDITOR ์ ์ฒ๋ฆฌ๋ฌธ์ผ๋ก ๊ฐ์ธ์ฃผ์๊ฑฐ๋ ์ญ์ ํ์๋ฉด ์ ์์ ์ผ๋ก ๋น๋๊ฐ ๋์ค๊ฒ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 41
Q&A
๋์งํด์ ๋ชธ๋ฐ์ํ๋ฉด ํผ๊ฒฉ์๋ฅผ ๋ ๋ฆฌ๋ฉด์ ๋ฐ๋ฏธ์ง๋ฅผ ์ ํ๋ ์คํฌ์ ์ด ์์คํ ์์ ์ด๋ป๊ฒ ๋ง๋ค ์ ์์๊น์??
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.๋์ง ๋ถ๋ถ ์ ์ฒด๋ฅผ SkillAction์ผ๋ก ๊ตฌํํด์ฃผ์๋ฉด ๋ฉ๋๋ค.DashAttackAction.csStart => ๋์ง ์์, owner.Movement.StartDash();Apply => Target๋ค์๊ฒ Skill์ ์ ์ฉํจ, target.SkillSystem.Apply(skill)Release => ๋์ง ์ข ๋ฃ, owner.Movement.StopDash();ApplyCycle๊ณผ ApplyCount๋ฅผ 0(๋ฌดํ)์ผ๋ก ์ฃผ๊ณ , SelectionAction์ Entity ์์ , SearchAction์ Entity ์ฃผ๋ณ์ผ๋ก ํ๋ฉด Entity๊ฐ ๋์งํ๋ฉฐ ์๊ธฐ ์ฃผ๋ณ ์ ์ ๋๋ฆฌ๊ฒ ์ฃ ? ๋๋ฆฐ ์ ์ ๋ ๋๋ฆฌ์ง ์๊ธฐ ์ํด์๋ ํ๋ฒ ๋๋ฆฐ ์ ์ Caching ํด๋๋ค๊ฐ ๊ฐ์ ์ ์ด Target์ผ๋ก ์กํ๋ฉด ๋ฌด์ํด์ผํ ๊ฒ๋๋ค.owner.StartDash์์ผ๋ก Entity์ ๋์ง์ ๊ตฌํ์ ํ์ง ์๊ณ DashAttackAction.cs ์์ฒด์ Coroutine์ด๋ Task๋ก Action ์์ฒด์ Entity๋ฅผ ๋์ง ๊ตฌํ์ ํ์๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 73
Q&A
์์ดํ ์์คํ ๊ฐ์
์๋ ํ์ธ์.ํ์ฌ ๊ฒ์ ์ถ์๊ฐ ๋ฆ์ด์ง๋ฉด์ ๊ฐ์ ์ถ์ ์๊ธฐ๋ ๊ฐ์ด ๋ฏธ๋ค์ก์ต๋๋ค. ํ์ฌ ๋ง๋ฌด๋ฆฌ ๋จ๊ณ์ ์์ผ๋ฉฐ ๋ค์ ๋ฌ ์ด์๋ ํ์คํ ๊ฐ์ ์ถ์๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ๋ค๋ ค์ฃผ์๋๋ฐ ๋ฆ์ด์ง ์ ์ ๋ง ์ฃ์กํฉ๋๋ค.
- 0
- 2
- 76
Q&A
์คํฌ ๊ด๋ จ ์ง๋ฌธ์ ๋๋ค
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.์คํฌ์ ๊ฐํํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ์์ต๋๋ค.1. ๊ฐํ ๋ฒ์ ์ ์คํฌ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ํ์ํ ๋ ํ์ฌ ์คํฌ์ ๊ฐํ๋ ์คํฌ๋ก ๊ต์ฒดํ์ผ๊ตฌ -> ๊ฐํยทํ์ผ๊ตฌ์๊ธฐํ์ ์๋ก๋ ํน์ ์คํฌ์ ํ๋ํ๋ฉด ํ์ผ๊ตฌ๋ฅผ ๊ฐํยทํ์ผ๊ตฌ๋ก ๊ต์ฒดํ๊ณ , ํน์ ์คํฌ์ด ์ฌ๋ผ์ง๋ฉด ๋ค์ ๊ธฐ๋ณธ ํ์ผ๊ตฌ๋ก ๊ต์ฒดํด์ฃผ๋ฉด ๋ ๊ฒ๋๋ค.2. Skill์ Effect๋ฅผ ์ค์๊ฐ ์ ๋ฐ์ดํธSkill์ Effect๋ฅผ ์ถ๊ฐํ ์ ์๊ฒ ์์ ํด์ฃผ์๊ณ , Effect์ ํจ๊ณผ๋ ์์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ฃผ์๋ฉด ๋ฉ๋๋ค.// Skill์ ์๋ก์ด ํจ๊ณผ ์ถ๊ฐskill.AddEfffect(newEffect);// Skill์ ์๋ ํ์ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ดvar targetEffect = skill.Effects.First(x => x.CodeName == "BURN");// ๊ฐ์ ธ์จ ํ์ ํจ๊ณผ์์ Action์ ๊ฐ์ ธ์ ์ ์ฉ Stack์ 2๋ก ์์ (targetEffect.Action as BurnAction).ApplyStack = 2;๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 85
Q&A
Quest System์ ํ์ฅ์ฑ์ ๋ํ ์ง๋ฌธ
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.-์ ํ ์๊ฐ ์์ ํด๋ฆฌ์ด ํ๋๊ฐ์ด๊ฑด ์๋์ ๊ฐ์ด ๋ฌด์ธ๊ฐ๋ฅผ ํด๋ฆฌ์ด์ ๊ทธ ์ ๋ณด๋ฅผ Target์ผ๋ก ๋ง๋ค์ด Report๋ฅผ ๋ณด๋ด๋ฉด ๋ฉ๋๋ค.// ClearInfostruct ClearInfo { int stageLevel, flaot clearTime }// QuesrSystemQuestSystem.Instance.ReceiveReport(CATEGORY_STAGE_CLEAR, clearInfo, 1);// TaskTarget.IsEqual// ์คํ ์ด์ง ํด๋ฆฌ์ด ์ ๋ณด๊ฐ ์กฐ๊ฑด์ ๋ง๋ค๋ฉด true๋ฅผ return.if (target is ClearInfo clearInfo)return clearInfo.level == targetStageLevel && clearInfo.clearTime elsereturn false; -ํน์ ์คํฌ์ ์ฌ์ฉํ์ง ์์๋๊ฐ, ํน์ ์์ดํ ์ ๋ณด์ ํ๊ณ ์๋ ์ํ๋ก ์๋ฃํ๋๊ฐTask์ชฝ์ Task ๋์๋ง๋ค ํธ์ถ๋๋ ๋ชจ๋์ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.// Task์ ๊ฐ ๋จ๊ณ์์ ์คํ๋ Module// TaskCustomAction.cspublic virtual OnStart(Task task) {} // Task์ Start ํจ์์์ ์คํpublic virtual OnEnd(Task task) {} // Task์ End ํจ์์์ ์คํ// Taskvoid Start(){...customAction.OnStart(this);}void End(){...customAction.OnEnd(this);}OnStart์์ ์บ๋ฆญํฐ๊ฐ ์ด๋ค ์คํฌ์ ์ฌ์ฉํ๋์ง ์ด๋ฒคํธ๋ก ๊ฐ์ํ๋ ๋ชจ๋์ ๋ง๋ค๊ณ ,ํน์ ์คํฌ์ ์ฌ์ฉํ๋ฉด Task๊ฐ ์คํจ๋๊ฒ ๋ง๋ค๋ฉด ๋๊ฒ ์ฃ .// SkillObservingAction : TaskCustomActionpublic override OnStart(Task task){// ํน์ ์คํฌ์ ์ฌ์ฉํ๋ฉด Task ์คํจtask.Owner.Owner.onSkillUsed += OnSkillUsed;}public overrride OnEnd(Task task){// Task๊ฐ ๋๋ฌ์ผ๋ ์ถ์ ์ข ๋ฃtask.Owner.Owner.onSkillUsed -= OnSkillUsed;}๋ณด์๋ ๊ฒ์ฒ๋ผ Task์ ์กฐ๊ฑด์ ๋ง๋๋๊ฑด ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์'QuestReport๋ก ๋ณด๋ผ Target Data๋ฅผ ๋ค๋ฌ์ ๊ฒ์ธ๊ฐ? ์๋๋ฉด Task์ Module์ ๋ง๋ค ๊ฒ์ธ๊ฐ?'Quest๋ฅผ ๋ง๋ค ๋ ํ๋จ์ด ํ์ํฉ๋๋ค.์์ธ๋ฌ Task์ Module ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ง๋ค์ด๋ Module์ ์ฐจ๊ณก์ฐจ๊ณก ์ ์์๋๋ฉด ์ดํ์ ๋ค๋ฅธ ๊ฒ์์ ๊ฐ๋ฐํ ๋๋ ์ฌ์ฉํ ์ ์์ผ๋ ๊ฐ๋ฅํ๋ฉด ๋ด์ฉ์ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋์๋๊ฒ ์ข์ต๋๋ค.Module์ ๋ํ Reference๋ฅผ ์์ฑํด๋๋ค๋ฉด, ๊ธฐํ์๋ ๋์์ด๋๊ฐ ์ฐธ๊ณ ํด์ ๋ง๋ค์ด๋ Module๋ค์ ์ฌ์ฉํด ์ง์ Quest๋ฅผ ์ ์ํ๊ณ ํ ์คํธ ํด๋ณผ ์๋ ์์ ๊ฒ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 75
Q&A
ํต์ผ๋ Stat์ ์ฌ์ฉํ์ง ์๊ณ ๋ชจ๋ํ ๋ฐฉ์์ผ๋ก Stats๋ฅผ ๋ง๋์ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.๋ฐฉ์์ ๊ดํด์๋ ๋ชจ๋ Entity๊ฐ ํต์ผ๋ Stat์ ๊ฐ์ ธ๋ ์๊ด์ ์์ต๋๋ค.๋ค๋ง, ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ํน์ Entity๋ง ๊ฐ์ง๊ณ ์๋ Stat์ด๋ Player๋ง ๊ฐ์ง๊ณ ์๋ Stat์ ๋ง๋ค ๋๋ ์กด์ฌํฉ๋๋ค. Player๋ง ์ฌ์ฉํ Stat์ ์ ์ญ, ์ ๋ฐฑ ์ข ์ ๋ชจ๋ Monster๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฒ๋ ๋ญ๋น์ด๊ธฐ ๋๋ฌธ์ ๊ณต์ฉ์ผ๋ก ๋ชจ๋ ๊ฐ์ Stat์ ๊ฐ์ง๊ฒ ํ ์ง, Stat์ ๋ฐ๋ก ์ ๋ณํด์ ๋ฃ์ด์ค์ง ์ ํ์ง๋ฅผ ๋ง๋ค์ด์ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. Stat์ด๋ผ๋๊ฒ ์ ์ ์ ์ ์ฅ์์ ํ, ์ง๋ฅ, ๋ฏผ์ฒฉ ์ด๋ฐ ๊ฒ๋ง ์์ ๊ฒ์ด๋ผ ์๊ฐํ๊ธฐ ์ฝ์ง๋ง, ์ค์ ๊ฐ๋ฐ์์๋ ํ๊ธ ๊ฒฐ์ ๋ ๊ด๊ณ , ๊ณ์ ์ ๋ํ ์ ๋ณด, ๊ฒ์ ๋ด์ Data ๋ฑ ๋ค์ํ ๊ฒ๋ค์ด Player์ ๋์ ๋ณด์ด์ง ์๋ Stat์ผ๋ก ๋ง๋ค์ด์ง๊ธฐ๋ ํฉ๋๋ค.์ ๊ฐ์ ๊ฒฝ์ฐ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ Stat๋ค์ System์์ ์ค์ ํด๋๊ณ , Entity๊ฐ ๋ง๋ค์ด์ง ๋ ์๋์ผ๋ก Entity์ Stats์ ์ค์ ๋๊ฒ ๋ง๋ค์ด๋์๊ตฌ์, ๊ฑฐ๊ธฐ์ ๋ฐ๋ก Stat์ด ํ์ํ Entity์ ๊ฒฝ์ฐ ์ง์ ํ์ํ Stat์ ์ถ๊ฐํด์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 100
Q&A
Effect์ ๊ธฐ๋ฅ ํ์ฅ์ ๋ํด์ ์ง๋ฌธ์ด ์์ต๋๋ค.
์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.Effect๋ฅผ ๋ค์ํ ์ํฉ์ ์ ์ฉ์ํค๊ธฐ ์ํด์๋ EffectAction์ Callback ํจ์๋ฅผ ์ฐ๊ฒฐํ ์ ์๋ ๋ค์ํ event๋ค์ ์ด์ดํ ๋ง๋ค๊ณ , ๋์ ๋ฐ๋ผ์๋ ํน์ Damage ์ ํ์ Stat์ผ๋ก ๋ง๋๋ ๋ฑ ์ ์ ํ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํด์ผํฉ๋๋ค.์๋ฅผ ๋ค์ด, ์ฃฝ์ผ๋ฉด ์ฆ์ ๋ถํํ๋ ํจ๊ณผ๋ผ๊ณ ๊ฐ์ ํ๋ฉด ์๋์ ๊ฐ์ด EffectAction์ ๋ง๋ค ์ ์์๊ฒ๋๋ค. EffectAction.cs public override Start(Effect effect) { effect.Owner.Owner.onTakeDamage += OnTakeDamage; } public override bool Apply(Effect effect) { // event๋ฅผ ํตํด ํจ๊ณผ๋ฅผ ์ ์ฉํ๋ค๋ฉด, ์ํ๋ฅผ ๋ฆฌ์ ํ๊ณ true๋ฅผ return if (isApplied) { isApplied = false; return true; } return isApplied; } public override Release(Effect effect) { effect.Owner.Owner.onTakeDamage -= OnTakeDamage; } public void OnTakeDamage(Entity target, float damage); { // ๋์์ด ์ด๋ฒ์ Damage๋ฅผ ๋ฐ๊ณ ์ฃฝ์๋ค๋ฉด HP๊ฐ 1์ธ ์ํ๋ก ๋ถํ์ํด if (target.IsDead) { target.HPStat.Value = 1f; isApplied = true; } }Effect๊ฐ ์คํ๋ ๋ Owner Entity์ onTakeDamage Event์ Callback ํจ์๋ฅผ ์ฐ๊ฒฐํด๋๊ณ , Entity๊ฐ ์ฃฝ์ผ๋ฉด ํจ๊ณผ๊ฐ ๋ฐ๋ํ๋ ํ์์ ๋๋ค.ํน์ ์ข ์กฑ์๊ฒ ๊ฐํ๋ ํผํด ์ฆ๊ฐ๋ ์ข ์กฑ ํผํด ๋ฐฐ์จ์ Stat์ผ๋ก ๋ง๋ค ์ ์์๊ฒ๋๋ค.์๋ฅผ ๋ค์ด, Elf ์ข ์กฑ์ ๋ํ Damage ์ฆ๊ฐ๋ฅผ ๋ด๋นํ๋ INCREASED_DAMAGE_TO_ELF Stat์ ๋ง๋ค๊ณ , Effect๋ Stat์ ์์น๋ฅผ ์ฆ๊ฐ์ํค๋ฉด ๋ฉ๋๋ค. EffectAction.cs public override Start(Effect effect) { } public override bool Apply(Effect effect) { effect.Owner.Owner.Stats.SetBonusValue("STAT_INCREASED_DAMAGE_TO_ELF", this, 0.2f); } public override Release(Effect effect) { effect.Owner.Owner.Stats.RemoveBonusValue("STAT_INCREASED_DAMAGE_TO_ELF", this); }// Entity.cs public void GiveDamage(Entity target) { float damage = Stats.GetValue("DAMAGE"); if (target.Race == Race.Elf) damage *= Stats.GetValue(STAT_INCREASED_DAMAGE_TO_ELF); target.TakeDamage(damage) }์๋ ์์๋ผ์ if๋ฌธ์ผ๋ก ํ๋ ์ฝ๋ฉํ์ง๋ง, ์ ๋๋ก ๋ง๋ค ๋๋ Entity๊ฐ ์ ๋๋ก๋ ์ข ์กฑ ๊ฐ์ ๊ฐ์ง๋๋ก ํ์ฅ์ ํด์ผ๊ฒ ์ฃ .Damage ๊ฐ์ ๊ฐ์๊ฑด Damage๋ฅผ ๊ณ์ฐํ ๋ ์ฌ์ฉํ Action Callback๋ค์ ๋ฐ์์Invocation์ ํตํด์ ์ฐ๊ฒฐ๋ Action๋ค์ ์ํํ๋ฉด์ ์ต์ข ๊ฐ์ ๊ตฌํ ์ ์์ต๋๋ค EffectAction.cs public override Start(Effect effect) { effect.Owner.Owner.CalcDamage += CalcDamage; } public override bool Apply(Effect effect) { // event๋ฅผ ํตํด ํจ๊ณผ๋ฅผ ์ ์ฉํ๋ค๋ฉด, ์ํ๋ฅผ ๋ฆฌ์ ํ๊ณ true๋ฅผ return if (isApplied) { isApplied = false; return true; } return isApplied; } public override Release(Effect effect) { effect.Owner.Owner.CalcDamage -= CalcDamage; } private float CalcDamage(Entity instigator, DamageType damageType, float damage) { // ๊ณต๊ฒฉํ ์ ์ Damage Type์ด ํ์์ฑ์ด๋ฉด Damage๋ฅผ ๋ฌด๋ฌํ์ํด. if (damage > 0f && damageType == DamageType.Fire) { isApplied = true; return 0f; } // ์ ์ Damage Type์ด ํ์์ฑ์ด ์๋๋ผ๋ฉด Effect๊ฐ ์๋ํ์ง์์ else return damage; }// TakeDamage ํจ์ ์ // ์ฐ๊ฒฐ๋ Callback ํจ์๋ค์ ์ํํ๋ฉฐ ์ต์ข Damage ๊ณ์ฐ์ ํจ. // ์ Effect๊ฐ ๋ฐ๋ํ ๊ฒฝ์ฐ ์ต์ข Damage๋ 0์ด ๋จ. foreach (var calc in CalcDamage.GetInvocationList().Cast()) damage = calc.Invoke(this, damageType, damage);๋ณด์๋ฏ ๋ณต์กํ ์ฒด๊ณ๋ฅผ ๊ฐ์ง ์ ํฌ ์์คํ ์ ๋ณตํฉ์ ์ธ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๊ตฌํํ์ฌ์ผํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ญ๋์ ๋์ด์ฌ๋ฆด ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋์ RPG ๊ฒ์ ๊ฐ๋ฐ์ด ์ด๋ ต๋ค๊ณ ๋ง์ด๋ค ์๊ธฐํ๋ ๊ฒ์ ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 106





![Thumbnail image of the [Unity Level Up!] Modularly Developing Skill System](https://cdn.inflearn.com/public/courses/333173/cover/1ebf894e-36b3-4254-b9f7-9c1e0f43e02b/333173.png?w=148)
![Thumbnail image of the [Unity Level Up!] Quest & Achievement System Developed Modularly](https://cdn.inflearn.com/public/courses/327970/cover/7e68ea5f-28f1-40ee-af0b-a223bd98d182/327970-eng.png?w=148)