현재 강의에서 float 자료형으로 스탯을 만들고 있는것을 보았습니다.
고민을 하다보니 Value가 float, int, int64로 쓰고 싶은 경우가 생겨서 IStat이라는 인터페이스를 만들어서 통합관리를 하는 구조로 바꿨습니다.
그로인해 코드가 조금 지저분해진거 같아서 고민이 됩니다.
IO 관련해서도 유동적으로 쓸 수 있을지도 조금 고민이 됩니다.
강사님은 이런 고민에 대해 어떻게 대처해야할지 알려주시면 감사하겠습니다.
이상입니다
스탯 관련 자료형에 관한 질문이 있습니다
Hyojin Seo
작성일
24.07.04 17:29
조회수
146
댓글 2
안녕하세요.
보통 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은 제가 자주 구현하는 방식입니다.
상속은 안할 수 있으면 최대한 안하는게 가장 좋습니다.
상속이 모든걸 해결해주는 만능 기능처럼보여도 편한만큼 위험 부담도 크게 따라오기 때문에 정말로 신중하게 고려해야합니다.
감사합니다.
답글
답변 감사합니다 :)
답글