[Unity] AssetDatabase 사용하여 원하는 경로에 특정 에셋 생성하기/불러오기

박민주·2022년 2월 16일
1

Unity

목록 보기
19/40
post-thumbnail

서버에서 불러온 songItem 데이터를 저장하기 위해서는 미리 로컬에 파일을 만들어야 하는데
이러한 .asset 확장자의 커스텀 에셋은 File.Create()로는 잘 안된다..

여기서는 별로 중요하지는 않지만, 이렇게 생긴 에셋이다

그래서 찾아보니 AssetDatabase 라는 게 있었다

AssetDatabase

  • 새로운 에셋을 지정된 경로에 생성
  • 경로에 확장자 명시
    -> 머터리얼(.mat), 큐브 맵(.cubemap), 스킨(.GUISkin), 애니메이션(.anim), 다른 임의의 에셋(.asset)
  • 에셋을 만든 후에 AssetDatabase.AddObjectToAsset을 통해 에셋을 파일에 더 추가할 수 있음
  • 에셋이 path에 이미 존재하는 경우, 새 에셋을 만들기 전에 삭제됨 (덮어씌워진다는 의미인 듯)
  • 모든 경로는 프로젝트 폴더 기준 (ex. Assets/Resources/..)

그렇게 해서 작성한 코드는 다음과 같다
CreateAsset()을 통해 .asset의 임의의 에셋 파일을 만들어주었다

   string songItemPath = "Assets/Resources/songItem.asset";
   void Start()
    {
        var songItem = new SongItem();
        AssetDatabase.CreateAsset(songItem, songItemPath);
        
        // Print the path of the created asset
        Debug.Log(AssetDatabase.GetAssetPath(songItem));
    }

정상적으로 로그 출력도 되고

원하는 폴더에 songItem.asset도 생성되었다!

그리고 이렇게 생성한 에셋을 불러오기 위해서는 다시 한 번 AssetDatabase를 사용해야 한다
LoadAssetAtPath()를 통해 불러올 수 있다

	SongItem songItem = (SongItem)AssetDatabase.LoadAssetAtPath(songItemPath, typeof(SongItem));

참고
https://docs.unity3d.com/kr/530/ScriptReference/AssetDatabase.CreateAsset.html

profile
Game Programmer

0개의 댓글