강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

starkshn님의 프로필 이미지
starkshn

작성한 질문수

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

Stats

SetBonusValue함수 질문있습니다.

작성

·

45

0

image.png

Stat.cs에서 위 코드에서 BonusValue -= bonusValuesByKey[key][subKey]; 를 왜해주는것인지 궁금합니다.

퀴즈

이 시스템에서 IdentifiedObject 베이스 클래스의 주요 목적은 무엇일까요?

게임 오브젝트의 위치를 관리하기 위해서

데이터베이스에서 스킬이나 아이템 같은 데이터 오브젝트를 관리하기 위해서

캐릭터의 애니메이션 상태를 제어하기 위해서

플레이어 입력 이벤트를 처리하기 위해서

답변 2

0

Developer G님의 프로필 이미지
Developer G
지식공유자

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

예를 들어, 이미 적용 중인 '공격력 10 증가 효과'를 20으로 바꾼다고 생각해 보세요. 단순히 20을 더하기만 하면 총합은 30(현재 10 + 증가된 효과 20)이 되어버리겠죠? 그래서 기존에 더해져 있던 10을 먼저 빼서 0으로 만든 뒤, 새로운 20을 더해줘야 정확히 20만 반영됩니다. Line 92의 코드는 바로 그 '기존 값을 취소하는 과정'이라고 이해하면 됩니다.

감사합니다.

0

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

SetBonusValue 함수에서 BonusValue -= bonusValuesByKey[key][subKey];를 수행하는 이유는 이전에 설정된 보너스 값을 제거하기 위해서입니다. 다음은 그 로직의 간단한 설명입니다:

  1. 기존 값 제거: subKey에 대한 값이 이미 존재할 경우, 이 값을 BonusValue에서 빼줍니다. 이렇게 하는 이유는 이미 더해진 값을 제거하지 않고 새로운 값을 추가하면 이전 값과 겹쳐 잘못된 누적 결과가 될 수 있기 때문입니다.

  2. 새로운 값 설정: 그런 다음 새로운 보너스 값을 설정하여 bonusValuesByKey[key][subKey]에 할당합니다.

  3. 업데이트된 값 반영: 마지막으로 BonusValue에 새로운 보너스를 더해줍니다. 이는 최근의 subKey에 매핑된 값으로 업데이트된 보너스 값을 반영하기 위함입니다.

이 과정은 BonusValue가 항상 현재 상태를 정확히 반영하도록 보장하는 역할을 합니다.

좀 더 구체적인 설명과 기존의 비슷한 질문에 대한 답변을 확인하고 싶다면, 다음 URL을 참조해 주세요:
- delegate를 사용하신 이유가 궁금합니다. - 함수의 동작과 메커니즘을 이해하는 내용에 도움이 될 수 있습니다.

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

starkshn님의 프로필 이미지
starkshn

작성한 질문수

질문하기