using System.IO; using UnityEditor; using UnityEngine; public class ExampleEditorScript : MonoBehaviour { [MenuItem("Tools/PalletteTexture")] static void CreateTexture3D() { int size = 256; int sizeSub = size - 1; TextureFormat format = TextureFormat.RGBA32; TextureWrapMode wrapMode = TextureWrapMode.Clamp; Texture2D texture = new Texture2D(size, size, format, false); texture.wrapMode = wrapMode; var size2D = size * size; Color[] colors = new Color[size2D]; for (int i = 0; i < size2D; i++) { colors[i] = Color.clear; } var image = Resources.Load("Pallette/palette"); var pixels = image.GetPixels(); //must be size for (int i = 0; i < size; i++) { var color = pixels[i]; var x = color.r * sizeSub; var y = color.b * sizeSub; var cood = (int)(x * size + y); var value = i * 1f / size; colors[cood] = new Color(value, value, value, 1); } texture.SetPixels(colors); texture.Apply(); byte[] bytes = texture.EncodeToPNG(); var dirPath = Application.dataPath + "/Resources/Pallette/"; File.WriteAllBytes(dirPath + "PalletteTex.png", bytes); } }