![[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템강의 썸네일](https://cdn.inflearn.com/public/courses/333173/cover/1ebf894e-36b3-4254-b9f7-9c1e0f43e02b/333173.png?w=420)
[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
₩198,000
7일만
30%
₩138,600
중급이상 / Unity, modules
4.8
(12)
다양한 게임에 적용할 수 있는 [스킬 시스템]과 개발 생산성을 높여주는 [툴 제작], 구조적인 프로그래밍 방식인 [모듈식 프로그래밍]을 배우는 강의입니다.
중급이상
Unity, modules
안녕하세요, 게임을 사랑하고 개발을 사랑하는 게임 프로그래머 Developer G입니다.
저는 어떻게하면 깔끔하고 체계적인 코드를 작성할 수 있을지 항상 고민하는데요,
제 고민의 결과물들을 여러분들에게 아낌없이 가르쳐드리겠습니다!
[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
₩198,000
7일만
30%
₩138,600
중급이상 / Unity, modules
4.8
(12)
다양한 게임에 적용할 수 있는 [스킬 시스템]과 개발 생산성을 높여주는 [툴 제작], 구조적인 프로그래밍 방식인 [모듈식 프로그래밍]을 배우는 강의입니다.
중급이상
Unity, modules
[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
₩36,300
7일만
30%
₩25,410
초급 / Unity
4.8
(48)
다양한 게임에 적용할 수 있는 [퀘스트 시스템]과 개발의 생산성을 높이기 위한 [모듈식 프로그래밍]을 배우는 강의입니다.
초급
Unity
질문&답변
MonoStateMachine을 만든 이유가 잘 이해가 가지 않습니다.
수강해주셔서 감사합니다. StateMachime을 MonoBehaviour를 상속 받아 만들면 비 GameObject 객체에 사용할 수 없습니다. 예를 들어, 강의의 Skill은 SO 객체이므로 Mono가 아닌 일반 클래스로 만들어진 StateMachine이 필요합니다. 개발을 하다보면 비 GameObject에 대한 Logic 제어가 필요한 부분이 꽤 많기 때문에 우선적으로 모든 class에 범용적으로 사용할 수 있도록 일반 class의 StateMachine을 만들어준 뒤, GameObject일 경우 쉽게 StateMachine을 갈아낄 수 있도록 MonoStateMachine을 만들어준 것입니다. 굳이 얘기드리자면 MonoStateMachine을 만들 필요는 없는데 편의성을 위해서 만들어준 것입니다. 감사합니다.
질문&답변
End()와 Complete() 함수를 따로 구현한 의도
수강해주셔서 감사합니다.Complete 함수는 TaskGroup 혹은 Task를 '완료 상태'로 만들고 싶을 때 호출합니다. 예를 들어, '퀘스트 완료권' 아이템을 캐쉬로 판다고 가정했을 때, 이 아이템을 쓰면 TaskGroup의 Complete 함수를 써서 TaskGroup을 완료 상태로 만들어주는 겁니다. 그리고나서 퀘스트를 준 NPC에게 찾아가 말을 걸면 퀘스트가 완료되겠죠.End 함수는 현재 TaskGroup이 완전히 종료되어 더 이상 동작할 필요가 없을 때 호출됩니다. Task가 Complete 된 상태라고 하더라도 설정(CanReceiveReportsDuringCompletion)에 따라서 보고를 계속 받을 수 있던걸 기억하시죠? Complete 함수는 Task를 완료 상태로 만들어줄 뿐, Task를 끝내진(End) 않기 때문에 완료 상태에서 언제든지 미완료 상태로 전환될 수 있습니다. 예를 들어, Task의 조건 아이템(=슬라임 점액 5개)을 먹어서 Task가 완료된 상태(Complete)이지만, 조건 아이템을 다시 버린다면 미완료 상태(Running)로 전환되겠죠? End 함수가 호출되기 전까지는 Task는 완료 여부와 상관 없이 계속 동작 중인 상태인 겁니다.감사합니다.
질문&답변
근접 콤보 공격을 만들고 싶습니다.
수강해주셔서 감사합니다.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을 따로 만드는게 나을 수도 있습니다.감사합니다.
질문&답변
Target의 value에 Object 자료형 관련 질문입니다!
수강해주셔서 감사합니다.public abstract T value { get; }이렇게 만든다는게 class를 TaskTarget 형식으로 만들면 되지 않냐는 말씀이시겠죠?TaskTarget 형식으로 만들면,[SerializeField]private TaskTarget[] targets;이렇게 SerializeField 변수로 받을 수가 없기에 Generic을 쓰지 않는 것입니다.감사합니다.
질문&답변
하나의 스킬 내에서 타겟, 이펙트가 여러번 바뀌게 하는 방법이 궁금합니다.
수강해주셔서 감사합니다.비슷한 질문이 있었던지라 같은 답변을 드리겠습니다.방법은 크게 두 가지가 있습니다.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번을 방식을 활용하면 되겠습니다.감사합니다.
질문&답변
올해에 예정된 새로운 강의가 있으신지요?
수강해주셔서 감사합니다.봄 중으로 아이템 시스템 강의 출시가 예정되어 있습니다.감사합니다.
질문&답변
스킬트리 질문입니다
(사진)Output Attribute에서 직접 설정하시거나Editor Code에서 Port를 만들 때 Multiple로 설정하시면 됩니다.
질문&답변
스킬트리 질문입니다
수강해주셔서 감사합니다.Output Attribute의 connectionType을 ConnectionType.Multiple로 설정하면 됩니다.감사합니다.
질문&답변
만약 초록슬라임 10마리 킹슬라임3개 같은 여러조건 경우는
수강해주셔서 감사합니다. (사진) 관리를 편하게 하기 위해서는 이런 식의 툴 개발을 필요하구요, (사진)보기 힘든 부분은 inlineEditor Attribute를 적용해서 ScriptableObject를 참조하고 있는 Inspector에서 바로 다른 ScriptableObject를 수정하거나 볼 수 있게 만들어주시면 한결 편할겁니다. Odin Inspector Asset이나 Github Toolbox 같은 Attribute Package를 보시면 이런 Attribute가 있으니 확인해보시면 될 것 같습니다.강의에서는 Action까지 전부 ScriptableObject로 만들지만 부분적으로 SerializeReference 형태로 바꿔주시면 관리가 좀 더 편해지실 겁니다.감사합니다.
질문&답변
TaskGroupState에 대하여 질문이 있습니다
수강해주셔서 감사합니다.IsAllTaskComplete는 TaskGroup에 속해 있는 모든 Task가 완료되었는지 여부이구요, IsComplete는 TaskGroup 자제가 완료되었는지 여부입니다. WatingForComplete 상태라면, IsAllTaskComplete는 true라도 IsComplete는 false가 될 수 있겠죠.(모든 작업을 완료한 상태지만 아직 완벽히 끝내진 않은 상태. Task들의 상태가 언제든 변할 수 있음.)감사합니다.