728x90
AssetPreview.GetAssetPreview() 란?
AssetPreview.GetAssetPreview() 는 오브젝트의 프리뷰 이미지를 아주 간단하게 텍스쳐로 가져올 수 있는 Unity Editor에서만 사용 가능한 함수 입니다.
기본적으로 AssetPreview.GetAssetPreview() 로 얻은 텍스쳐는 회색 배경의 불투명한 이미지를 만들어 줍니다.
하지만 AssetPreview.GetAssetPreview() 로 얻은 이미지의 배경이 불투명하면 다른 오브젝트나 UI에 넣어 사용할때 불투명한 배경이 굉장히 다른 오브젝트나 UI의 그림을 방해하기 때문에 AssetPreview.GetAssetPreview()로 얻은 텍스쳐의 배경을 투명하게 만들어 볼 것 입니다.
1. AssetPreview.GetAssetPreview()로 오브젝트의 프리뷰 이미지를 텍스트로 만들기
Texture2D texture = AssetPreview.GetAssetPreview(obj);
2. TextureFormat.RGBA32의 텍스쳐를 하나 새로 만듭니다
Texture2D transparentTexture = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false);
3. GetPixels() 로 텍스쳐의 픽셀을 가져온뒤 픽셀의 0번째 색과 같은 색은 알파값을 0으로 만들어 줍니다.
Color[] pixels = texture.GetPixels();
Color backgroundColor = pixels[0];
for (int i = 0; i < pixels.Length; i++)
{
if (pixels[i] == backgroundColor) pixels[i].a = 0;
}
*주의, 만약 오브젝트에 Color backgroundColor = pixels[0]와 같은 색이 있으면 배경 뿐만 아니라 오브젝트안에 같은 색도 투명해 집니다.
5. 변경한 픽셀을 SetPixels() 하고 Apply() 해줍니다.
transparentTexture.SetPixels(pixels);
transparentTexture.Apply();
6. 마무리
byte[] bytes = transparentTexture.EncodeToPNG();
File.WriteAllBytes(path, bytes);
728x90
'Unity > 제로부터 구현' 카테고리의 다른 글
Pentagon Balance UI 제작하기 (0) | 2024.06.07 |
---|---|
MiniMap (2D) (0) | 2024.01.21 |
Cinemachine 을 사용한 카메라 이동 범위 제한 (2D) (0) | 2024.01.16 |
플레이어의 정보를 로컬 저장소에 저장하기 (PlayerPrebs) (0) | 2023.12.24 |
Meteor 구현하기(Shader,Particle 활용) (0) | 2023.12.14 |