인프런 커뮤니티 질문&답변
안녕하세요 선생님 공부중에 궁금한게 있어서 질문 드려요
작성
·
26
0
안녕하세요 선생님
현재 올려주신 게임을 하나하나 분석하면서 공부하고 있는 취준생 입니다.
다름이 아니라 이건 치트를 쓰지 않으면 잘 찾을수 없는 부분인데 제가 이해한게 맞는지 궁금하여 질문 드립니다.
일단 첫번째 버그? 이상한 부분은 서포트 스킬을 배웠을때 수치 변화 입니다.
예를들어 공격력을 5프로 올리는 서포트 스킬을 배웠을때 5프로 수치가 상승해야 하는데 10프로가 상승을 하길래 브레이크 포인트로 차근차근 넘겨보니 UpdatePlayerStat 함수를 호출할대 InitCreaureStat 을 호출하는데 거기서 Atk,MaxHp 등의 값을 곱해주고 다시 updateplayerstat 에서 처리를 또 해주더라구요 그래서 일단은 InitCreautreStat 함수 부분에 Stat 처리를 해주는 부분을 주석처리 해서 중복으로 서포트 스킬의 general 타입들이 적용되는걸 막았는데 이렇게 하는게 맞는건지 궁금합니다.
두번째 이상한 부분은 special 서포트 스킬 부분입니다.
이것도 역시 치트를 쓰지않으면 정말 찾기가 힘든 부분인데 현재 skillbook 스크립트 부분에서 addsupportskill 을 통해서 서포트 스킬을 추가하고 있는데 여기서 special 서포트 스킬의 경우에 skillbase 에 updateskilldata 함수에서 해당 공격스킬의 추가 값을 처리해 주는걸로 알고 있습니다 근데 여기서 예를들어 일렉트로닉 필드의 범위를 0.1 증가해주는 스킬을 배웠다고 했을때 처음에 배울때는 0.1이 정상적으로 증가를 하는데 두번째 일렉트로닉 필드 0.1 증가를 배웠을때 SupportSkills 리스트를 순회하면서 값을 적용하는데 이미 0.1이 증가된 specail 스킬을 한번 더 순회를 하여 0.1 + 0.1 해서 0.2가 되어야 하는데 0.1증가되서 0.2가 된 상태에서 한번 더 순회를 해서 0.3이 되는 현상이 있다는걸 알게 되었습니다.
그래서 현재 해결책으로는 AddSupportSkill 에서 Special 서포트 스킬을 SkillBase 의 updateskillData 부분에서 처리를 넘겨줬는데 그러지 않고 그냥 AddSupportSkill 함수 내에서 변경된 값을 추가를 하고 UpdateSkillData 함수로 넘기지 않고 처리 하는 방식으로 수정을 해서 이상하게 수치가 나오는 부분을 수정을 하고 기존의 Skillbase 스크립트 부분의 UpdateSKillData 함수 부분에서 처리하는 부분을 주석처리 해줘서 일단 중첩되서 처리가 되는 값을 수정을 해주었는데 혹시 더 나은 방법이 있는지 궁금하여 질문을 남깁니다.
일단 이렇게 좋은 자료를 주셔서 너무 감사드리고 앞으로도 계속 꾸준히 코드를 뜯어보며 공부를 열심히 하겠습니다. 날씨가 많이 추운데 감기 조심하시고 공부하다가 궁금한 부분은 이곳에 또 남기도록 하겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. sunrise3225님!
질문해주신 내용에서 두 가지 이슈가 보이네요. 먼저, 각 이슈에 대해 간단히 설명드릴게요.
서포트 스킬의 중복적용 이슈: 서포트 스킬을 통한 공격력이나 HP 증가가 중복으로 적용되는 문제는
UpdatePlayerStat함수에서InitCreatureStat함수와 중복 처리되기 때문입니다. 주석 처리를 통해 중복 호출을 막으신 방법은 문제 해결에 적절한 접근법으로 보입니다.Special 서포트 스킬의 중첩 이슈: 특정 스킬이 두 번 적용되는 문제는 상태 갱신 로직에서 중복 적용될 수 있기 때문입니다. 해당 부분은
AddSupportSkill함수에서 직접적으로 값을 적용하거나, 업데이트 시 중복이 발생하지 않도록 로직을 개편하는 방향이 좋습니다. 방법론적으로 잘 접근하신 것 같습니다만, 유지보수성을 고려하여 로직을 단순화하는 것도 중요합니다.
흥미로운 내용이라 유사한 질문이 많지는 않지만, 유니티에서 버프 및 디버프, 상태 이상 처리 등의 로직을 다룬 게시물을 참조하시면 도움이 될 수 있습니다:
해당 링크에서는 초기화 및 상태 변경에 관한 패턴을 설명하며 객체의 재활용 및 초기화에 대한 참고자료로 활용하실 수 있습니다.
질문자님의 현재 접근 방식은 매우 논리적이고 이미 문제 이해와 해결 방안을 잘 정리하신 것 같습니다. 조금 더 최적화나 구조에 대한 탐색이 필요하시다면, 관련 강의를 계속 참고하며 자신만의 스타일을 정립해 나가시길 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





