안 쓰던 블로그

유니티 Resources.LoadAll으로 리소스 파일 전체 불러오기(sprite 불러오기) 본문

유니티/개발

유니티 Resources.LoadAll으로 리소스 파일 전체 불러오기(sprite 불러오기)

proqk 2020. 1. 19. 21:25
반응형

유니티에서 서브 디렉토리를 만들 때 특정 이름으로 만들면 특별한 작동을 한다

Resources라는 이름의 폴더가 있다면, 그 폴더 안의 리소스를 불러오는 함수를 쓸 수 있다

 

Resources 폴더를 새로 만들어서 안에 이미지 파일을 넣었다

테스트를 위한 버튼 하나를 만들어서 스크립트를 붙였다

public class Box1Manager : MonoBehaviour
{
    object[] sprites;

    // Start is called before the first frame update
    void Start()
    {
        sprites = Resources.LoadAll("1_LikeLove");
        for (int i = 0; i < sprites.Length; i++)
        {
            GameObject go = sprites[i] as GameObject;
        }
    }

    public void OnClickBox1() //1번 박스가 클릭되면
    {
        print("클릭");
        foreach (var t in sprites)
        {
            Debug.Log(t);
        }
    }
}

 

실행해보면 출력은 잘 되는데 2개씩 나온다

실제 폴더를 보면 이미지 파일+meta 파일 이렇게 있는데, 메타 파일도 같이 출력되는 것 같다

나는 이미지 파일만 있으니까 아예 sprite 형식 파일만 불러오게 해봤다

 

public class Box1Manager : MonoBehaviour
{
    Sprite[] sprites;

    // Start is called before the first frame update
    void Start()
    {
        sprites = Resources.LoadAll<Sprite>("1_LikeLove");
    }

    public void OnClickBox1() //1번 박스의 답체크
    {
        print("클릭");
        foreach (var t in sprites)
        {
            Debug.Log(t);
        }
    }
}

 

sprite파일만 출력한다

 

 

참고로 전체 파일이 아니라 각각 가져오고 싶다면

GameObject temp5 = Resources.Load( "Resources아래의 파일 경로" ) as GameObject; 라고 하면 된다

 

그래도 안 돌아가면 아래 항목들을 체크해보면 됨

1. using UnityEngine.UI;로 UI불러왔나?

2. 리소스들이 Resources 파일 하위에 위치한 것이 맞나?

3. 파일명 잘 썼나?

4. 파일 형식은 올바른가?

5. 이 코드의 문제가 맞나? 버튼 쪽이나 다른 오브젝트의 문제는 아닌지?

반응형
Comments