
2D 농사 시뮬레이션 게임에서 작물의 외형 표시를 변경할 때, Sprite Library와 Sprite Resolver를 이용하여 제어하기로 했다.
Sprite Library는 스프라이트들을 Category와 Label을 이용해 분류하여 저장할 수 있는 기능이다.

위의 예시처럼 각 작물에 관련된 Category를 생성하고, 그에 맞는 스프라이트들을 Label로 구분하여 넣을 수 있다.
Sprite Resolver는 이 Sprite Library에서 적절한 Category와 Label을 적용할 수 있게 해준다.

Sprite Resolver에서 Category와 Label을 설정하면, Sprite Library의 해당 스프라이트가 Sprite Renderer에 표시된다.
코드로 설정하기 위해서는 다음과 같은 메서드를 이용할 수 있다.
private void UpdateCropSprite(Vector3Int p_cropPosition)
{
if (cropStateDictionary.TryGetValue(p_cropPosition, out var cropState))
{
cropState.spriteResolver.SetCategoryAndLabel(cropState.seedSO.itemName, cropState.growthStage.ToString());
}
}
SpriteResolver의 SetCategoryAndLabel(string category, string label)을 이용하면, Category와 Label을 제어할 수 있게 된다.
위 코드는 좌표를 받으면 해당되는 CropState를 찾고, 그에 맞는 Category와 Label을 넣는 기능을 한다.
Label이름을 정수형태로 한 이유는 바로 ToString()을 통해 성장 단계를 바로 Label값으로 넣기 위해서이다.
Label이름을 Stage_0 같은 식으로 하고, $"Stage_{cropState.growthStage}" 같은 식의 문자열값을 넣을 수야 있겠지만,
연산 처리적인 면을 고려했을 때, ToString()을 이용하는 것이 좋다고 생각이 들었다.
'내일배움캠프 TIL' 카테고리의 다른 글
| 내일배움캠프 55일차 TIL "시간마다 갱신되는 UI만들기" (0) | 2024.12.04 |
|---|---|
| 내일배움캠프 54일차 TIL "TimeManager 리팩토링" (0) | 2024.12.03 |
| 내일배움캠프 52일차 TIL "Happy Harvest 작물 시스템 분석" (0) | 2024.11.29 |
| 내일배움캠프 51일차 TIL "AnimationCurve를 이용한 조명구현" (0) | 2024.11.28 |
| 내일배움캠프 50일차 TIL "제네릭" (0) | 2024.11.27 |