반응형
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' 카테고리의 다른 글
[Unity] tag 비교하기('CompareTag()' VS '== tag') (0) | 2020.04.12 |
---|---|
[Unity] Coroutine VS Invoke (0) | 2020.04.11 |
[Unity] Update() vs FixedUpdate() (0) | 2020.04.09 |
[Unity] Circular Progress Bar(원형 진행바) 구현하기 (2) | 2020.04.08 |