Unity에서 에셋은 게임의 데이터를 저장하는 데 사용되는 파일입니다. 에셋에는 모델, 애니메이션, 사운드, 텍스처, 스크립트 등이 포함될 수 있습니다.
Unity에서는 스크립트에서 에셋을 생성하고 수정할 수 있습니다. 이를 위해서는 AssetDatabase 클래스를 사용합니다.
AssetDatabase 클래스
AssetDatabase 클래스는 에셋을 관리하는 데 사용되는 Unity의 기본 클래스입니다. 이 클래스는 에셋을 생성, 삭제, 수정, 검색하는 데 사용할 수 있습니다.
에셋 생성
AssetDatabase 클래스를 사용하여 에셋을 생성하려면 다음과 같은 단계를 수행합니다.
- AssetDatabase.CreateAsset() 메서드를 호출합니다.
- 메서드의 인수로 에셋의 데이터를 지정합니다.
예를 들어, 다음 코드는 ScriptableObject 에셋을 생성합니다.
public class Person : ScriptableObject
{
// 에셋의 데이터를 저장할 프로퍼티를 선언합니다.
public string name;
public int age;
}
// ScriptableObject 에셋을 생성합니다.
Person christmas = ScriptableObject.CreateInstacne<Person>();
christmas.name = "Santa Claus";
christmas.age = 2000;
// 에셋을 저장합니다.
AssetDatabase.CreateAsset(christmas, "Assets/christmas.asset");
이 코드는 Assets 폴더에 christmas라는 이름의 ScriptableObject 에셋을 생성합니다. name 변수에는 Santa Claus가, age에는 2000으로 저장됩니다.
에셋 수정
AssetDatabase 클래스를 사용하여 에셋을 수정하려면 다음과 같은 단계를 수행합니다.
- AssetDatabase.LoadAssetAtPath() 메서드를 사용하여 에셋을 로드합니다.
- 에셋의 데이터를 수정합니다.
- AssetDatabase.SaveAssets() 메서드를 사용하여 에셋을 저장합니다.
예를 들어, 다음 코드는 christmas 에셋의 이름을 변경합니다.
// ScriptableObject 에셋을 로드합니다.
Person christmas = AssetDatabase.LoadAssetAtPath<Person>("Assets/christmas.asset");
// 에셋의 데이터를 수정합니다.
christmas.name = "Rudolph";
// 에셋을 저장합니다.
AssetDatabase.SaveAssets();
이 예제는 christmas.asset 에셋의 이름을 Rudolph로 변경합니다.
에셋 이름 변경
AssetDatabase 클래스에는 에셋의 파일명을 변경할 수 있는 메서드인 RenameAsset() 함수가 있습니다.
예를 들어, 다음 코드는 christmas.asset을 rudolph.asset으로 변경합니다.
AssetDatabase.RenameAsset("Assets/christmas.asset", "rudolph");
추가 설명
AssetDatabase.CreateAsset() 메서드를 사용하여 에셋을 생성할 때는 에셋의 데이터를 객체로 전달합니다.
ScriptableObject 객체를 생성 할 때엔 ScriptableObject.CreateInstance() 메서드를 사용해야 합니다.
AssetDatabase.LoadAssetAtPath() 메서드를 사용하여 에셋을 로드할 때는 에셋의 경로를 문자열로 전달합니다.
AssetDatabase.SaveAssets() 메서드를 사용하여 에셋을 저장할 때는 에셋의 데이터를 변경한 후 호출해야 합니다.
요약
AssetDatabase 클래스를 사용하여 스크립트에서 에셋을 생성하고 수정할 수 있습니다. 이 클래스를 사용하여 게임의 데이터를 관리하고 게임 플레이를 개선할 수 있습니다.
'Unity > Tip' 카테고리의 다른 글
콜라이더 충돌 검사 : Physics.Overlap vs NonAlloc (0) | 2024.01.05 |
---|---|
유니티의 메타(meta) 파일은 무엇인가? (0) | 2023.12.22 |
Unity에서 패키지의 버전을 변경하는 방법 (0) | 2023.12.17 |
오브젝트 파괴 시 OnDestroy 이벤트 함수가 호출되지 않을 수 있다?? (0) | 2023.12.09 |
Unity의 Ray에 찍힌 오브젝트를 검출하지 못하는 조건 (0) | 2023.12.01 |