안녕하세요, 게임을 사랑하고 개발을 사랑하는 게임 프로그래머 Developer G입니다.
저는 어떻게하면 깔끔하고 체계적인 코드를 작성할 수 있을지 항상 고민하는데요,
제 고민의 결과물들을 여러분들에게 아낌없이 가르쳐드리겠습니다!
강의
수강평
- [유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
- [유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
- [유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
게시글
질문&답변
근접 콤보 공격을 만들고 싶습니다.
수강해주셔서 감사합니다.Skill Combo를 만드는건 강의 마지막에 만든 Skill Tree처럼 xNode를 이용해서 Skill들을 연결하여 발동 순서를 정해주면 될거구요, 당연히 Combo에 사용되는 Skill들은 미리 SkillSystem에 모두 등록이 되어있어야겠죠?Skill Combo가 Q Button에 등록되어있다고 가정하면, Q로 처음 스킬을 발동하면, Q에 등록된 Skill이 다음 Combo Skill로 바뀌고, 특정 타이밍(예를 들어, 현재 발동 중인 스킬이 종료)이 됐을 때 Q를 누르면 바뀐 Combo Skill이 사용되고, Q에 등록된 Skill이 다음 Combo Skill로 변경, 이 과정을 반복하면 됩니다. Combo가 끝났거나 일정 시간안에 Q를 누르지 않으면 Q Button에 등록된 Skill을 초기 Skill로 되돌리면 되겠죠. 만약 Combo가 Level에 따라 점점 확장되는 구조라면, 아직 SkillSystem에 등록되지 않은 Skill이 다음 Combo Skill일 경우에는 바로 Combo를 끝내는 방식으로 만들면 될 것 같습니다.다만, 모든걸 다 Skill로 처리하려고 하실 필요는 없습니다. 만드시려고하는 콤보가 정확히 어떤 방식으로 작동하는 것인진 알 순 없지만, 상황에 따라선 Skill보다는 Combat System을 따로 만드는게 나을 수도 있습니다.감사합니다.
- 0
- 1
- 14
질문&답변
Target의 value에 Object 자료형 관련 질문입니다!
수강해주셔서 감사합니다.public abstract T value { get; }이렇게 만든다는게 class를 TaskTarget 형식으로 만들면 되지 않냐는 말씀이시겠죠?TaskTarget 형식으로 만들면,[SerializeField]private TaskTarget[] targets;이렇게 SerializeField 변수로 받을 수가 없기에 Generic을 쓰지 않는 것입니다.감사합니다.
- 0
- 2
- 25
질문&답변
하나의 스킬 내에서 타겟, 이펙트가 여러번 바뀌게 하는 방법이 궁금합니다.
수강해주셔서 감사합니다.비슷한 질문이 있었던지라 같은 답변을 드리겠습니다.방법은 크게 두 가지가 있습니다.1. ApplyCount를 확장(사진)이게 강의에서 만든 단일 설정의 Skill이구요, (사진)이런 식으로 Action과 관련된 설정을 묶어서(구조체나 Class 배열) 현재 ApplyCount에 해당하는 설정을 가져와서 사용해주면 됩니다. ApplyCount가 많을 시에는 Level처럼 새로운 ApplyCount 설정이 있을 때까지 이전 ApplyCount 설정을 사용하는 형태로 만들어주시면 됩니다. 이미지에는 없지만 Action도 추가해주시면 ApplyCount에 따라서 완전히 다른 형태로 발동되는 Skill을 구현할 수 있습니다.2. Skill들을 따로 만들어서 연결Skill들을 따로 만들어서 변수로 연결시켜두고 Skill을 사용할 때마다 현재 Skill이 연결된 다음 Skill로 교체되게 만드는 방법이 있습니다.(지속 시간 안에 사용하지 않거나, 더 이상 연결된 스킬이 없다면 초기 Skill로 복귀)단순히 Skill을 연이어 사용하고 싶다면 1번을, 아예 Casting이나 Charge, PrecedingAction도 새롭게 하고 싶다면 2번을 방식을 활용하면 되겠습니다.감사합니다.
- 0
- 1
- 36
질문&답변
올해에 예정된 새로운 강의가 있으신지요?
수강해주셔서 감사합니다.봄 중으로 아이템 시스템 강의 출시가 예정되어 있습니다.감사합니다.
- 0
- 2
- 32
질문&답변
스킬트리 질문입니다
(사진)Output Attribute에서 직접 설정하시거나Editor Code에서 Port를 만들 때 Multiple로 설정하시면 됩니다.
- 0
- 3
- 46
질문&답변
스킬트리 질문입니다
수강해주셔서 감사합니다.Output Attribute의 connectionType을 ConnectionType.Multiple로 설정하면 됩니다.감사합니다.
- 0
- 3
- 46
질문&답변
만약 초록슬라임 10마리 킹슬라임3개 같은 여러조건 경우는
수강해주셔서 감사합니다. (사진) 관리를 편하게 하기 위해서는 이런 식의 툴 개발을 필요하구요, (사진)보기 힘든 부분은 inlineEditor Attribute를 적용해서 ScriptableObject를 참조하고 있는 Inspector에서 바로 다른 ScriptableObject를 수정하거나 볼 수 있게 만들어주시면 한결 편할겁니다. Odin Inspector Asset이나 Github Toolbox 같은 Attribute Package를 보시면 이런 Attribute가 있으니 확인해보시면 될 것 같습니다.강의에서는 Action까지 전부 ScriptableObject로 만들지만 부분적으로 SerializeReference 형태로 바꿔주시면 관리가 좀 더 편해지실 겁니다.감사합니다.
- 0
- 2
- 18
질문&답변
TaskGroupState에 대하여 질문이 있습니다
수강해주셔서 감사합니다.IsAllTaskComplete는 TaskGroup에 속해 있는 모든 Task가 완료되었는지 여부이구요, IsComplete는 TaskGroup 자제가 완료되었는지 여부입니다. WatingForComplete 상태라면, IsAllTaskComplete는 true라도 IsComplete는 false가 될 수 있겠죠.(모든 작업을 완료한 상태지만 아직 완벽히 끝내진 않은 상태. Task들의 상태가 언제든 변할 수 있음.)감사합니다.
- 0
- 2
- 30
질문&답변
카테고리의 응용에 대하여 여쭤보고싶습니다.
수강해주셔서 감사합니다.툴 제작이 이게 맞다, 저게 맞다 말씀드릴 수 있는 부분은 아니구요, 툴은 개발자 본인이 '편하게' 사용할 목적으로 만드는 것이기 때문에 본인이 쓰기 편한대로 수정을 하고, 문제가 생기면 고치고 그걸 반복해야 할 뿐입니다. 누구도 툴 구현에 대해 맞다, 틀리다 답을 내줄 순 없습니다. 안정성이 낮아지는지는 툴을 제작한 본인이 스스로 검토해보고 판단을 내려야 합니다. 중요한건 내가 이걸 왜 만들었고, 이로 인해 어떤 문제가 생길 수 있는지를 명확히 파악하는 것입니다. "이렇게 만들면 문제가 생길 수 있나?"라는 의문이 생긴다면 그 기능은 안만드는게 맞구요, 면밀히 검토해본 후에 만들어야 합니다.감사합니다.
- 0
- 1
- 49
질문&답변
패링형 스킬에 대해 여쭤보고싶습니다
수강해주셔서 감사합니다.개인적으로 봤을 때 InGuardingState을 만드는건 그다지 좋은 생각 같진 않습니다.피오라의 W는 공격을 막을 뿐만 아니라 마지막에 찌르기로 공격도 하죠?니키도 마찬가지구요.상태의 이름이 Guarding인데 여기에 공격에 대한 처리까지 들어간다는건 맞지 않을거구요, 공격에 대한 부분을 다른 State로 뺀다고하면, 앞으로 만들 다양한 효과를 가진 Skill들도 다 이런 식으로 State를 만들어줄거란 얘기인데 StateMachine이 불필요하게 커지겠죠.예시의 두 캐릭터 정도의 Skill은 Skill System을 크게 확장안해도 쉽게 만들 수 있습니다.[피오라 응수](PrecedingAction, 자신한테 Buff Effect를 걸고 0.75초 대기)피오라가 0.75초 동안 받는 모든 공격과 이동 불가 효과, 해로운 효과를 막아낸 다음,(Action, 공격이 적중한 적에게 Effect 적용)검을 찌릅니다. 검은 처음 적중한 챔피언에게 마법 피해를 입히고, 2초간 이동 속도와 공격 속도를 25%씩 둔화시킵니다.(Action 강화)피오라가 이동 불가 효과를 막아낼 경우, 찔린 적은 둔화하는 대신 기절시킵니다.마지막에 특정 조건 하에 Skill의 효과가 강화되는 부분만 기능 확장을 해주시면 됩니다. 살짝 편법으로 CC를 막아내면 순간적으로 Skill의 레벨을 올렸다가 Skill의 발동이 끝나면 다시 원래 레벨로 돌리는 식으로도 구현할 수 있을겁니다.[니키 가드&카운터](Skill1)가드:(PrecedingAction, 자신한테 Buff Effect를 걸고 0.75초 대기)마우스 커서가 위치한 방향으로 가드 자세를 취하여 0.75초 동안 모든 받는 피해가 감소하고, 모든 방해 효과를 무효화합니다.(Effect가 다른 Skill을 활성화 시킴)피해 효과 혹은 이동 불가 효과의 가드에 성공한 경우, 7초 동안 분노의 펀치!(E2)를 사용할 수 있게 되며,(Action, Skill2를 발동)지속 시간이 끝나면 카운터를 발동합니다.(Skill2)카운터: 짧은 거리를 돌진하면서 주변의 적들에게 스킬 피해를 입히고 1.5초 동안 이동 속도가 65% 느려지며, 지속 시간에 걸쳐 천천히 회복됩니다. 이동 불가 상태에서는 카운터가 발동하지 않습니다.니키의 W는 리신의 음파와 비슷하게 사실 Skill이 두 개입니다. 자기한테 0.75초 동안 공격 피해를 감소하는 Buff를 걸고, 이 Buff의 특수 효과로 공격 피해를 감소시킬 때 같은 Button에 할당되어 있는 분노의 펀치 Skill을 활성화시키는거죠(UseCondition 이용). 이 Skill을 사용하게되면 사용하고 있던 가드 Skill이 Cancel되면서 발동하는 겁니다.감사합니다.
- 1
- 2
- 73