• Home
  • About
    • KKsDev photo

      KKsDev

      게임 프로그래머를 목표로 Unity, C#을 공부하고 있습니다.

    • Learn More
    • Email
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

Unity Prefab, Resource.Load

19 Jul 2023

Reading time ~1 minute

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은 리소스를 논리적인 주소로 구분하여 로드할 수 있다.

리소스 간의 종속성이 줄어들며, 유지보수가 용이해진다.

리소스들의 로딩 및 언로딩을 관리하기 용이해지며, 리소스 관리가 효율적으로 이루어져 프로젝트가 커지고 복잡해질수록 유리하다



Unity Share Tweet +1