카테고리 없음
본캠프_TIL_43일차(Reasources.Load)
티-히히
2024. 11. 13. 23:55
오늘 한 일 (회고)
- 개인프로젝트
- 팀원들 알아가기
새로 배운 것
Reasources.Load
폴더에 있는 에셋을 런타임에 동적으로 불러오기 위해 사용하는 메서드입니다.
이를 사용하면 코드에 직접 에셋을 로드할 수 있고 미리 씬에 배치하지않은 오브젝트나 텍스처 등을
게임 실행 중일 때 필요에 따라 불러올 수 있습니다.
var prefab = Resources.Load<GameObject>("Cube");
Cube는 경로를 의미합니다.
주의 사항
var prefab = Resources.Load<GameObject>("Cube");
prefab.name = "box";
여기서prefab은 원본에셋의 참조이기 때문에
다음과 같이 변경 시 모든 인스턴스에 이 변경 사항이 적용 됩니다.
var prefab = Resources.Load<GameObject>("Cube");
var instance = Instantiate(prefab);
instance.name = "box";
이렇게 쓰면 원본 프리팹은 그대로 유지됩니다.
제네릭을 사용한 Resources.Load
public T LoadAsset<T>(string assetName) where T : Object
{
var asset = Resources.Load<T>(assetName);
return (T)asset;
}
이 메서드는 제네릭 타입 매개변수를 사용하여 특정 타입의 에셋을 로드할 수 있습니다.
T는 Object클래스를 상속받아야하는 제약조건이 있습니다.
프리팹 로드 예시
GameObject cubePrefab = LoadAsset<GameObject>("Prefabs/Cube");
오디오 클립 로드 예시
AudioClip bgMusic = LoadAsset<AudioClip>("Audio/BackgroundMusic");
GameObject도 AudioClip도 모두 Object를 상속받기에 LoadAsset메서드를 사용할 수 있습니다.