내일배움캠프 TIL

내일배움캠프 53일차 TIL "Sprite Library와 Sprite Resolver를 이용한 Sprite 처리"

Jooglorystar 2024. 12. 2. 22:11

 

 

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()을 이용하는 것이 좋다고 생각이 들었다.