작성
·
68
0
스프라이트 리소스를 비동기 로딩할 때 EXPGem_01.sprite 키값을 EXPGem_01.sprite[EXPGem_01]형태로 수정하여 Addressables.LoadAssetAsync함수를 호출해도 Texture2D타입의 오브젝트가 로딩되는데 왜 이런 현상이 생길까요?
string key = Random.Range(0, 2) == 0 ? "EXPGem_01.sprite" : "EXPGem_02.sprite";
Texture2D texture = Managers.Resource.Load<Texture2D>(key);
Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
go.GetComponent<SpriteRenderer>().sprite = sprite;
강제로 스프라이트를 생성해서 영상처럼 랜덤하게 젬이 드랍되긴 하는데 어디가 문제인지 모르겠어서 질문 드립니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
Quwyetr님께서 스프라이트 리소스를 비동기로 로딩할 때 오류가 발생하는 문제에 대해 질문을 주셨군요. EXPGem_01.sprite[EXPGem_01]
형태로 키값을 업데이트하셨음에도 불구하고 Texture2D
타입의 오브젝트가 로드되는 현상은 주로 키 값 설정과 관련된 문제일 가능성이 높습니다.
Texture와 Sprite의 차이: 유니티에서 리소스를 로드할 때, Texture2D
와 Sprite
는 다른 형태의 오브젝트입니다. 코드에서 Texture2D
를 로드한 후 Sprite.Create()
메서드를 사용하여 스프라이트로 변환하신 것으로 보입니다. 하지만 Addressables를 사용하여 스프라이트를 직접적으로 로딩하고 싶으시다면, 키 값에 대한 사전 정의가 정확해야 합니다.
Key 값의 정확성: 키 값인 EXPGem_01.sprite[EXPGem_01]
가 Addressables에서 정확히 설정되어 있는지 확인해 보세요. 잘못 설정된 키 값이 Texture2D 타입의 오브젝트를 반환할 수 있습니다.
관련 유사 질문 및 답변:
위에서 언급한 해결책이 도움이 되길 바랍니다. 또한, 오브젝트가 원하는 데이터 타입으로 로드되지 않는 문제가 지속된다면, 유니티의 Addressables 시스템 문서를 참조하시고, 문제가 발생하는 데이터 키 값이나 설정을 꼼꼼히 검토해 보시길 권장드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.