inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스탯 관련 자료형에 관한 질문이 있습니다

407

Hyojin Seo
0

현재 강의에서 float 자료형으로 스탯을 만들고 있는것을 보았습니다.
고민을 하다보니 Value가 float, int, int64로 쓰고 싶은 경우가 생겨서 IStat이라는 인터페이스를 만들어서 통합관리를 하는 구조로 바꿨습니다.
그로인해 코드가 조금 지저분해진거 같아서 고민이 됩니다.

IO 관련해서도 유동적으로 쓸 수 있을지도 조금 고민이 됩니다.
강사님은 이런 고민에 대해 어떻게 대처해야할지 알려주시면 감사하겠습니다.

이상입니다

unity modules

답변 2

1

Developer G

안녕하세요.

보통 Stat은 float형으로 많이들 처리하구요, 제가 알기론 int형으로 처리하는 경우는 거의 없습니다.
실제로 롤도 UI 출력을 정수 값으로 할 뿐, 내부적으로는 소수점까지 전부 계산되고 있습니다.(ex.UI에는 HP가 0이라고 나오는데 캐릭터가 살아있는 상황, HP가 실제로는 0.xx 남은 상태)
만약 int형 값이 필요하다면 Stat Class를 추가로 더 만들기보다는

Stat.cs
[SerializeField]
private bool isIntType; // enum으로 대체 가능 StatType { Float, Int }

public bool IsIntType => isIntType;

public int ValueAsInt => Mathf.Round(Value);
or
public int ValueAsInt => (int)Value;

위와 같이 Stat이 int형 Value를 쓰는 Stat인지 여부와 현재 float형인 Value를 int형으로 Casting해서 반환하는 Property를 Stat Class에 추가해주시는게 훨씬 깔끔합니다. Casting 한번으로 int형에 대한 지원이 끝나니까요. float->int Casting은 제가 자주 구현하는 방식입니다.

상속은 안할 수 있으면 최대한 안하는게 가장 좋습니다.
상속이 모든걸 해결해주는 만능 기능처럼보여도 편한만큼 위험 부담도 크게 따라오기 때문에 정말로 신중하게 고려해야합니다.

감사합니다.

0

Hyojin Seo

답변 감사합니다 :)

공부 방향성

0

192

1

Desktop용 게임 개발에도 도움이 될까요?

0

201

1

신입 게임 클라이언트 포트폴리오 레포 평가 부탁드립니다

0

293

0

개발자 자리와 AI?

0

454

1

파이어 베이스만 사용하는데

0

334

1

강의를 들을 때 해당 메서드의 개념이나 어떻게 작동하는지 모르고 따라 칠때가 있습니다.

0

438

0

강의에 대해 질문있습니다

0

414

0

메모리 누수에 대해서 질문드립니다.

1

388

3

멀티플레이에서 Skill 을 구현한다 했을 때 궁금한 점이 있습니다

0

432

3

이번 강으ㅏ

0

362

1

25일이 기대 됩니다

1

364

1

c#에 나온 개념을 c++서버에 그대로 적용시킬 수 있나요?

0

426

1