Prefab
여러가지 컴포넌트를 추가하고 속성을 변경해서 만든 오브젝트를 저장해두고 재사용 할 수 있다.
Hierarchy에 있는 오브젝트를 Project탭으로 드래그하서 Prefab으로 저장한다.
그리고 이런 Prefab이나 다른 리소스를 불러와서 사용하는 여러 방법이 있다.
1. 드래그 앤 드롭으로 리소스를 직접 할당
using UnityEngine;
public GameObject rain;
해당 오브젝트에 대한 변수를 public으로 생성 후 Inspector 창에서 원하는 프리펩을 할당한다.
장점 : 직관적
이고 편리
하고 빌드 시점에 프리펩이 로드되어 더 빠르다
단점 : 종속성이 강해져서 유지보수가 어려워지고, 프리펩을 동적으로 변경하거나 로드할 수는 없다.
2. Resources.Load()
GameObject rain = Resources.Load<GameObject>("Prefabs/rain")
Resources.Load() 함수는 Assets > Resources > 경로 (Prefabs/rain) 에 해당하는 파일을 Load한다.
리소스 로딩이 완료
되는 시점은Awake()메소드 이후
이기 때문에 그 전에 Resources.Load()를 사용하면 리소스가 아직 로드되지 않아 문제가 발생할 수 있어 Awake()메소드 이후로 사용해야 한다.
장점 : 리소스의 변경이나 교체가 간단해 종속성이 줄어들어 유지보수가 용이
하다, 빠르고 쉽게 코드로 구현
할 수 있다.
단점 : 모든 리소스를 Resources폴더로 관리해야 한다, 경로에서 오타문제가 생길 수 있다.
3. Addressable Asset System
위의 두 방법의 단점을 극복하고 리소스 로딩과 관리를 더욱 효율적으로 할 수 있도록 Unity에서 권장하는 고급 리소스 로딩 시스템
Addressable Asset Systems은 리소스를 논리적인 주소
로 구분하여 로드할 수 있다.
리소스 간의 종속성이 줄어들며, 유지보수가 용이해진다.
리소스들의 로딩 및 언로딩을 관리하기 용이해지며, 리소스 관리가 효율적
으로 이루어져 프로젝트가 커지고 복잡해질수록 유리하다