-
16주차 - 오브젝트 프리뷰 텍스쳐로 저장해버리기Unity/Unity 스파르타 2024. 4. 5. 15:44728x90
1. 인게임 커스텀 에디터에 사용되는 설치 가능한 오브젝트를 UI에 보여줄때 리소스 파일에있는 오브젝트의 AssetPreview를 사용해 텍스쳐로 가져와 스프라이트로 전환해 UI에 넣어줬는데, 빌드 후에는 AssetPreview를 사용할 수 없어서 UI에 제대로 이미지가 적용되지 않는 문제가 있었습니다.
오브젝트들의 Sprite 가 파츠처럼 나눠져있어 오브젝트들을 아이콘으로 사용하기위해 따로 아이콘을 만들어야 하나? 너무 번거로움에 다른 방법이 없을까 하고 고민하다가,
AssetPreview로 Texture2D 로 가져온걸 그냥 리소스 폴더에 저장하면 안되나? 하는 생각에 여러 시도를 해본결과
AssetPreview로 가져온 텍스쳐를 .EncodeToPNG() 함수를 사용해 텍스쳐를 png 파일로 변환해 바이트 배열로 저장한다음 File.WirteAllBytes 로 bytes 변수에 저장된 png이미지 데이터를 특정 경로에 저장해주면 AssetPreview로 가져온 텍스쳐를 리소스폴더에 저장할 수 있습니다 .
위 방법을 기존에 만들어 놓은 오브젝트 툴에 버튼을 만들어 오브젝트들을 일일이 아이콘을 만들 필요없이 한번에 스프라이트를 생성하게 만들었습니다.
void GeneratorObjPreviewSprite() { foreach(GameObject obj in objLists) { if (!FileExists(saveSpritePath, obj.name + ".png")) { Texture2D texture = AssetPreview.GetAssetPreview(obj); byte[] bytes = texture.EncodeToPNG(); File.WriteAllBytes($"{saveSpritePath}/{obj.name}.png", bytes); AssetDatabase.Refresh(); } } }
728x90'Unity > Unity 스파르타' 카테고리의 다른 글
16주차 - 인게임용 커스텀 에디터(타일),버튼 색 스크립트로 통제(ColorBlock) (0) 2024.04.03 15주차 - 커맨드 패턴 활용(클래스 다이어그램) (0) 2024.03.29 15주차 - 커맨드 패턴, (0) 2024.03.28 15주차 - 화염 방사기 기믹 만들기 (0) 2024.03.27 15주차 - Selection.activeGameObject, EditorApplication.ExecuteMenuItem() (0) 2024.03.26