コード例 #1
0
        public void Draw(TexturePacker texPacker)
        {
            GUILayout.Label("Preview", TexturePackerStyles.Heading);

            GUILayout.BeginVertical(TexturePackerStyles.Section);

            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();

            Vector2 previewSize = new Vector2(256, 256);

            GUILayout.Label("", TexturePackerStyles.MidBox, GUILayout.Width(previewSize.x), GUILayout.Height(previewSize.y));
            Rect previewRect = GUILayoutUtility.GetLastRect();
            Rect alphaRect   = new Rect(previewRect.x + 5, previewRect.y + 5, previewRect.width - 10, previewRect.height - 10);

            texPacker.ClearProperties();

            Texture2D preview = texPacker.Create();

            preview.alphaIsTransparency = true;

            if (toolbarItem == 0)
            {
                EditorGUI.DrawPreviewTexture(alphaRect, preview);
            }
            else
            {
                EditorGUI.DrawTextureAlpha(alphaRect, preview);
            }

            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();

            string[] toolbarItems = { "RBG", "Alpha" };
            toolbarItem = GUILayout.Toolbar(toolbarItem, toolbarItems);

            GUILayout.EndVertical();
        }
コード例 #2
0
        private void OnGUI()
        {
            if (_preview == null)
            {
                return;
            }

            _windowScrollPos = EditorGUILayout.BeginScrollView(_windowScrollPos, false, false);

            RefreshItems();

            GUILayout.Label(_windowTitle, TexturePackerStyles.Heading);
            GUILayout.BeginVertical(TexturePackerStyles.Section);

            GUILayout.Label("Inputs", TexturePackerStyles.Heading);
            foreach (TextureItem item in _items)
            {
                item.Draw();
            }

            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("+"))
            {
                TextureInput entry = new TextureInput();
                _texturePacker.Add(entry);
                _items.Add(new TextureItem(entry));
            }
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndHorizontal();

            int prevRes = _texturePacker.resolution;

            _texturePacker.resolution = 128;

            _preview.Draw(_texturePacker);

            _texturePacker.resolution = prevRes;

            GUILayout.Label("Options", TexturePackerStyles.Heading);
            GUILayout.BeginVertical(TexturePackerStyles.Section);
            textureFormat             = (TextureFormat)EditorGUILayout.EnumPopup("> Format:", textureFormat);
            _texturePacker.resolution = EditorGUILayout.IntPopup("> Resolution:", _texturePacker.resolution, _textureResolutionsNames.ToArray(), _textureResolutions.ToArray());
            GUILayout.EndVertical();

            if (GUILayout.Button("Generate Texture", TexturePackerStyles.Button))
            {
                string savePath = EditorUtility.SaveFilePanel("Save", Application.dataPath, "texture.png", textureFormat.ToString());
                if (savePath != string.Empty)
                {
                    Texture2D output = _texturePacker.Create();

                    if (textureFormat == TextureFormat.JPG)
                    {
                        File.WriteAllBytes(savePath, output.EncodeToJPG());
                    }
                    else if (textureFormat == TextureFormat.PNG)
                    {
                        File.WriteAllBytes(savePath, output.EncodeToPNG());
                    }
                    else if (textureFormat == TextureFormat.TGA)
                    {
                        File.WriteAllBytes(savePath, output.EncodeToTGA());
                    }
                    else
                    {
                        File.WriteAllBytes(savePath, output.EncodeToEXR());
                    }

                    AssetDatabase.Refresh();
                }
            }

            GUILayout.EndVertical();
            EditorGUILayout.EndScrollView();
        }