inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템

Skill (7) - SkillSystem

스킬 사용에 관한 질문이 있습니다.

128

고우진

작성한 질문수 26

0

스킬시스템의
public bool Use(Skill skill)

{

skill = Find(skill);

Debug.Assert(skill != null,

$"SkillSystem::IncreaseStack({skill.CodeName}) - Skill이 System에 등록되지 않았습니다.");

return skill.Use();

}
여기에서 스킬을 사용한다는것은 알겠는데 등록되어있는 스킬을 사용하는 방식이 어떤건지 잘 모르겠습니다.

모든 참조를 이용해서 찾아도 스킬테스트에서 사용한 것 말고는 없고 이벤트를 이용한것인가 싶어서 다 찾아보아도 안보여서 질문을 드립니다.

unity modules

답변 2

1

Developer G

수강해주셔서 감사합니다.

Skill은 SkillSlot class에서 할당된 Button(1~9)를 누르면

// SkillSlot.cs 75번 줄
private void UpdateInput()
{

if (skill.IsUseable && Input.GetKeyDown(useKeyCode))
{

skill.Owner.SkillSystem.CancelTargetSearching();

skill.Use();
}
}

위 함수가 실행되어 SkillSlot이 가지고 있는 Skill을 사용하게 됩니다.
SkillSlot이 가지고 있는 Skill은 SkillSystem에 등록된 Skill이기 때문에 따로 찾을 필요가 없어서
SkillSystem을 거치지 않고 가지고 있는 Skill의 Use 함수를 직접 호출합니다.

감사합니다.

0

고우진

좋은강의 감사합니다.

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 고우진님.

스킬 시스템에서 스킬을 등록하고 사용하는 방식에 대한 질문을 주셨군요. 스킬 사용의 핵심은 스킬이 시스템에 등록된 후 이를 참조하여 사용할 수 있도록 설정하는 것입니다. SkillSystem에서 Use 메서드를 통해 스킬을 실행할 수 있습니다.

  1. 스킬 등록: 먼저, 스킬이 SkillSystem에 등록되어야 합니다. 이는 보통 SkillSystem의 초기화 과정에서 이루어지며, Register(skill) 같은 메서드를 사용하여 등록됩니다.

  2. 스킬 찾기: Use 메서드의 skill = Find(skill); 라인은 주어진 스킬이 제대로 등록되었는지 판단하기 위해 사용됩니다. 여기서 Find 메서드는 등록된 스킬 목록에서 입력된 스킬을 찾아 반환하는 역할을 합니다.

    • Find 메서드가 스킬을 찾지 못할 경우, Debug.Assert는 오류 메시지를 출력합니다. 이는 개발자가 스킬 시스템이 제대로 동작하도록 체크하는 디버그 도구입니다.
  3. 스킬 실행: 스킬이 유효하게 확인되면, skill.Use();가 호출됩니다. 이 부분에서 스킬의 작동(예: 데미지 적용, 효과 발현 등)이 구체적으로 실행됩니다.

여기서 중요한 점은 Use 메서드가 스킬을 호출할 때 단순히 스킬의 상태를 변경하거나 효과를 발휘할 수 있도록 스킬 클래스가 요구하는 메커니즘을 따라야 한다는 것입니다. 예를 들어, 마나가 충분한지, 쿨다운이 끝났는지 등을 체크한 후 실행되게 할 수 있습니다.

더 알아보기:

이와 유사한 구현 방법에 대해 적 스킬 관련 질문 을 참고하시면 도움이 될 것입니다. 링크에서는 스킬 시스템에서의 스킬 사용과 효과 발현에 대한 예제와 설명을 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Indicator와 SelectionAction 및 SearchAction 간의 관계에 대해 질문있습니다.

0

70

2

ChargingState에서 질문이 있습니다.

0

49

1

Effect.GetData 함수 질문있습니다.

0

45

2

CanTransitionToSelf 질문 있습니다.

0

53

2

Stat의 MaxValue에 관하여 질문이 있습니다.

0

42

1

Stat vs StatScaleFloat

0

75

4

애니매이션 버그가 있는것 같습니다.

0

65

2

StatsOverride질문이 있습니다.

0

50

2

SetBonusValue함수 질문있습니다.

0

46

2

오늘 수강시작한 취준생입니다.

0

49

1

사소하지만 에디터 관련 질문있습니다

0

69

1

스킬시스템을 데이터 테이블화 하는 법에 대해 감이안잡혀서 질문드립니다.

0

146

2

TargetSearcher에 대해서 질문이 있습니다

0

52

1

돌진해서 몸박을하면 피격자를 날리면서 데미지를 입히는 스킬은 이 시스템에서 어떻게 만들 수 있을까요??

0

116

2

스킬 관련 질문입니다

0

110

2

통일된 Stat을 사용하지 않고 모듈화 방식으로 Stats를 만드신 이유가 궁금합니다.

0

152

1

Effect에 기능 확장에 대해서 질문이 있습니다.

0

149

2

SkillData 구조체 질문

0

122

1

스킬트리 저장 질문입니다

0

135

2

BT와 FSM을 활용해 몬스터 AI 구현

0

350

2

MonoStateMachine을 만든 이유가 잘 이해가 가지 않습니다.

0

128

1

근접 콤보 공격을 만들고 싶습니다.

0

153

1

하나의 스킬 내에서 타겟, 이펙트가 여러번 바뀌게 하는 방법이 궁금합니다.

0

190

1

올해에 예정된 새로운 강의가 있으신지요?

0

115

2