[Unity3D] Sprite 동적할당.

※ Sprite를 public으로 인스펙터창에 노출시킨뒤 드래그로 넣는것이 아닌,

폴더안에 존재하는 이미지의 경로를 받아 할당하는 방법이다.



개발하다보면 Sprite를 변수에 동적으로 넘겨줘야 할때가 있다.



게임 시작 시 'Resources'폴더 안에 있는 1이라는 이미지가 public으로 선언된 Sprite변수인 spr에

동적으로 들어가게 된다.


코드는 이렇다.


1
2
3
4
5
6
public Sprite spr;
 
void Start()
{
    spr = Resources.Load<Sprite>("경로");
}
cs


※ 주의사항

- 이미지는 Resources폴더에 있어야 한다.

이때 폴더 이름은 정확히 Resources여야 한다.

- 이미지의 Texture Type은 Sprite여야 한다.



한 가지더.


만약 이러한 이미지가 있다고 하자.



이 이미지의 모드는 Multiple로써

많은 자식들의 이미지를 가지고 있다.

이 모든 이미지를 동적으로 받고자 한다.


위의 소스를 조금만 수정하면 된다.

밑에와 같이 수정해주자.


1
2
3
4
5
6
public Sprite[] spr;
 
void Start()
{
    spr = Resources.LoadAll<Sprite>("경로/이미지 ");
}
cs


※ 필자같은 경우 경로는 Img폴더에 이미지 이름이 Imgs이므로

spr = Resources.LoadAll<Sprite>("Img/Imgs"); 가 된다.



그리고 게임을 수행하면



위와같이 이미지들이 들어가게 된다.



저렇게 하나의 이미지 말고 폴더안에 존재하는 모든 이미지들을 할당 받고 싶다면

경로/이미지이름 에서 이미지이름을 지워주고 이미지가 존재하는 폴더까지만 경로를 써주면

그 폴더안에 존재하는 모든 이미지들을 모두 받아올수 있게 된다.


1
2
3
4
5
6
public Sprite[] spr;
 
void Start()
{
    spr = Resources.LoadALL<Sprite>("경로");
}
cs




※ Img폴더 안에 있는 모든 이미지를 받아오게 되었다.