Unity

[Unity] sprite 동적으로 변경하기(Resources.LoadAll)

JayLee 2020. 7. 3. 07:42
반응형

Unity 개발을 하다보면 Sprite를 동적으로 변경해야하는 경우가 발생합니다. 이때 어떻게 처리를 해야하는지 살펴보도록 하겠습니다. 오늘은 Resources.LoadAll API를 이용할 예정입니다. 

먼저 선행되어야할 작업은 Sprite의 경로를 확인하는 것입니다. Resources.LoadAll API를 이용하여 Sprite를 가져오기 위해서는 반드시 Resources 폴더내에 Sprite가 존재해야합니다. 그래야 정상적으로 Sprite를 로드할 수 있습니다.

 

위 이미지와 같이 Resouces/Sprites/Player 폴더에 있는 "Player01"이라는 Sprite를 가져온다고 가정해보겠습니다. 그렇다면 아래와 같은 소스를 이용하여 Sprite를 가져올 수 있습니다.

Sprite[] sprites = Resources.LoadAll<Sprite>("Sprites/Player/Player01");

 

sprites 배열의 데이터가 정확히 들어있다면 Sprite를 가져오는데는 성공했습니다. 그렇다면 가져온 Sprite를 적용시켜야겠죠?

void Start()
{
	SpriteRenderer spriteR = gameObject.GetComponent<SpriteRenderer>();
	Sprite[] sprites = Resources.LoadAll<Sprite>("Sprites/Player/Player01");
	spriteR.sprite = sprites[0];
}

 

저는 해당하는 gameObject의 Script를 만들고 SpriteRenderer Component를 가져왔습니다. spriteR이라고 이름지어진 SpriteRender의 sprite에 로딩된 sprite를 넣어주는 방법을 사용했습니다. 이렇게하면 쉽게 동적으로 sprite를 변경할 수 있습니다.

 

참고:

 

 

Unity - 스크립팅 API: Resources.LoadAll

If path refers to a folder, all assets in the folder will be returned. If path refers to a file, only that asset will be returned. /path/는 프로젝트의 애셋 Assets 폴더에 내에 Resources 폴더의 상대경로입니다. Note: 유니티에서 모

docs.unity3d.com

 

반응형