2021년 4월 30일 금요일

유니티 동적 Sprite 로딩하기

 개발하다보면 Spirte 를 SpriteRenderer 한테 동적으로 넘겨줘야할 때가 있습니다.

그럴때는 가볍게 해결할 수 있는데요.


1
2
3
4
SpriteRenderer renderer;
int playerNo = 1;

renderer.sprite = Resources.Load<Sprite>("Sprites/Common/Player/player " + playerNo);
cs


위와 같이 하면 됩니다.

그런데 as 로 캐스팅하게 되면 안되더군요.


밑의 코드와 같이 하면 이상하게 안됩니다.


1
2
3
4
SpriteRenderer renderer;
int playerNo = 1;

renderer.sprite = Resources.Load("Sprites/Common/Player/player " + playerNo) as Sprite;
cs


저는 이렇게 해서 한참을 헤맸는데요. 저처럼 헤매지 마세요.


※ 주의 사항 - 동적으로 연결이 안될 경우

1. Resources.Load 를 사용할 경우 'Resources' 폴더 밑에 해당 파일이 있어야 합니다.


 이와 같이 'Resources' 폴더명이 정확해야합니다.


2. Resource.Load(경로) => 경로가 'Resources' 폴더부터 상대 경로입니다. 해당 경로도 정확해야합니다. 단, 확장자는 필요 없습니다.


3. Sprite 의 경우 이미지 타입을 inspector 에서 Sprite 로 변경을 안 하면 null 을 리턴합니다.


댓글 없음:

댓글 쓰기