카테고리 없음

본캠프_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메서드를 사용할 수 있습니다.