inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Effect (2)

텍스트 변환 Mark에 대하여 질문이 있습니다.

117

고우진

작성한 질문수 26

0

EffectAction에서
public string BuildDescription(Effect effect, string description, int stackActionIndex, int stack, int effectIndex)

{

var stringsByKeyword = GetStringsByKeyword(effect);

if (stringsByKeyword == null)

return description;

if (stack == 0)

// ex. description = "적에게 $[EffectAction.defaultDamage.0] 피해를 줍니다."

// defaultDamage = 300, effectIndex = 0, stringsByKeyword = new() { { "defaultDamage", defaultDamage.ToString() } };

// description.Replace("$[EffectAction.defaultDamage.0]", "300") => "적에게 300 피해를 줍니다."

description = TextReplacer.Replace(description, "effectAction", stringsByKeyword, effectIndex.ToString());

else

// Mark = $[EffectAction.Keyword.StackActionIndex.Stack.EffectIndex]

description = TextReplacer.Replace(description, "effectAction", stringsByKeyword, $"{stackActionIndex}.{stack}.{effectIndex}");

return description;

}
여기 부분에서 왜 굳이 스택 0번째 인걸 구분하고 Effect에서 여기에서

public string BuildDescription(string description, int effectIndex)

{

Dictionary<string, string> stringsByKeyword = new Dictionary<string, string>()

{

{ "duration", Duration.ToString("0.##") },

{ "applyCount", ApplyCount.ToString() },

{ "applyCycle", ApplyCycle.ToString("0.##") }

};

description = TextReplacer.Replace(description, stringsByKeyword, effectIndex.ToString());

description = Action.BuildDescription(this, description, 0, 0, effectIndex); // 여기부분에 질문이 있습니다 여기에서 0번째 것을 구분하고

var stackGroups = StackActions.GroupBy(x => x.Stack);

foreach (var stackGroup in stackGroups)

{

int i = 0;

foreach (var stackAction in stackGroup)

description = stackAction.BuildDescription(this, description, i++, effectIndex);

}// 여기에서 1스택이상 스킬의 텍스트를 전부 변환해주는데

return description;

}

 

EffectStackAction에서
public string BuildDescription(Effect effect, string baseDescription, int stackActionIndex, int effectIndex)

=> action.BuildDescription(effect, baseDescription, stackActionIndex, stack, effectIndex);
이렇게 까지 분리해서 텍스트로 변환하는지 여쭤보고 싶습니다.

그냥 0번째부터 텍스트를 변환하면 안되는건지 질문이 있습니다.

 

unity modules

답변 1

1

Developer G

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

stack이 0(=기본 Action)일 때는 '$[effectAction.keyword.effectIndex]' 이 형식의 Mark를 쓰게 되구요,
stack이 0 보다 클 때는 '$[effectAction.keyword.stackActionIndex.stack.effectIndex]' 형식의 Mark를 씁니다.
Mark를 이런 식으로 정한건 한 눈에 봤을 때 '기본 Action의 Mark다', '~ Stack의 ~ Index의 Action의 Mark다'라는걸 알아보기 위해서입니다.

if (stack == 0) 이 부분을 없애고 '$[effectAction.keyword.stackActionIndex.stack.effectIndex]' Mark만 쓰도록 통일해도 되지만, 이럴 경우 기본 Action의 Mark도

'적에게 $[effectAction.defaultDamage.0.0.0] 피해를 줍니다.'

이런 식으로 길게 작성해줘야합니다.
개인적으로 이게 싫어서 구분을 해준 것일 뿐 큰 의미는 없습니다.

Mark의 형태와 Mark를 Replace하는 방식은 제 취향에 맞춘 것이기 때문에 강의에서 말씀드렸다싶이 'Mark를 Replace해서 Description을 만드는 방법'만 숙지하신다면 세부적인 부분은 개인 취향에 맞게, 더 낫다고 생각하시면 방향으로 수정하시면되므로 너무 얽매이실 필요는 없습니다.

감사합니다.

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