Exemple #1
0
        public static void _SetIOSAndAndroidRGB4(TextureImporter textureImporter, TextureCompressionQuality compressionQuality)
        {
            int cq = (int)compressionQuality;

            TextureImporterPlatformSettings platformTextureSettings;

            platformTextureSettings                    = textureImporter.GetPlatformTextureSettings(Android);
            platformTextureSettings.format             = TextureImporterFormat.ETC_RGB4;
            platformTextureSettings.compressionQuality = cq;
            platformTextureSettings.overridden         = true;
            textureImporter.SetPlatformTextureSettings(platformTextureSettings);

            platformTextureSettings                    = textureImporter.GetPlatformTextureSettings(iPhone);
            platformTextureSettings.format             = TextureImporterFormat.PVRTC_RGB4;
            platformTextureSettings.compressionQuality = cq;
            platformTextureSettings.overridden         = true;
            textureImporter.SetPlatformTextureSettings(platformTextureSettings);

            platformTextureSettings            = textureImporter.GetDefaultPlatformTextureSettings();
            platformTextureSettings.format     = TextureImporterFormat.RGB24;
            platformTextureSettings.overridden = true;
            textureImporter.SetPlatformTextureSettings(platformTextureSettings);

            textureImporter.alphaSource   = TextureImporterAlphaSource.None;
            textureImporter.mipmapEnabled = false;
        }
 public static void CompressTexture(Texture2D texture, TextureFormat format, TextureCompressionQuality quality)
 {
     if (texture == null)
     {
         throw new ArgumentNullException("texture can not be null");
     }
     EditorUtility.CompressTexture(texture, format, (int)quality);
 }
        public static void CompressTexture(Texture2D texture, TextureFormat format, TextureCompressionQuality quality)
        {
            if (texture == null)
            {
                throw new ArgumentNullException(nameof(texture));
            }

            CompressTexture(texture, format, (int)quality);
        }
        public override void ApplyDefaults()
        {
            this.RuleKey = "New Texture Rule";
            this.Suffix  = ".png";

            TextureType = TextureImporterType.Default;

            IsReadable           = false;
            IsMipmap             = false;
            allowsAlphaSplitting = false;
            NpotScale            = TextureImporterNPOTScale.None;

            WrapMode   = TextureWrapMode.Clamp;
            FilterMode = FilterMode.Bilinear;

            Compression           = TextureImporterCompression.Compressed;
            AndroidCompressFormat = TextureImporterFormat.ETC2_RGBA8;
            iOSCompressFormat     = TextureImporterFormat.PVRTC_RGBA4;
            CompressionQuality    = TextureCompressionQuality.Best;
        }
Exemple #5
0
 public static void CompressCubemapTexture(Cubemap texture, TextureFormat format, TextureCompressionQuality quality)
 {
     CompressCubemapTexture(texture, format, (int)quality);
 }
Exemple #6
0
 public static void CompressTexture(Texture2D texture, TextureFormat format, TextureCompressionQuality quality)
 {
     CompressTexture(texture, format, (int)quality);
 }
 /// <summary>
 ///   <para>Compress a texture.</para>
 /// </summary>
 /// <param name="texture"></param>
 /// <param name="format"></param>
 /// <param name="quality"></param>
 public static void CompressTexture(Texture2D texture, TextureFormat format, TextureCompressionQuality quality)
 {
   EditorUtility.CompressTexture(texture, format, (int) quality);
 }
        public static void CompressCubemapTexture(Cubemap texture, TextureFormat format, TextureCompressionQuality quality)
        {
            if (texture == null)
            {
                throw new ArgumentNullException("texture can not be null");
            }

            CompressCubemapTexture(texture, format, (int)quality);
        }
    /// <summary>
    /// Draw the inspector widget.
    /// </summary>

    public override void OnInspectorGUI()
    {
        NGUIEditorTools.SetLabelWidth(80f);
        mAtlas = target as UIAtlas;

        UISpriteData sprite = (mAtlas != null) ? mAtlas.GetSprite(NGUISettings.selectedSprite) : null;

        GUILayout.Space(6f);

        if (mAtlas.replacement != null)
        {
            mType        = AtlasType.Reference;
            mReplacement = mAtlas.replacement;
        }

        GUILayout.BeginHorizontal();
        AtlasType after = (AtlasType)EditorGUILayout.EnumPopup("Atlas Type", mType);

        NGUIEditorTools.DrawPadding();
        GUILayout.EndHorizontal();

        if (mType != after)
        {
            if (after == AtlasType.Normal)
            {
                mType = AtlasType.Normal;
                OnSelectAtlas(null);
            }
            else
            {
                mType = AtlasType.Reference;
            }
        }

        if (mType == AtlasType.Reference)
        {
            ComponentSelector.Draw <UIAtlas>(mAtlas.replacement, OnSelectAtlas, true);

            GUILayout.Space(6f);
            EditorGUILayout.HelpBox("You can have one atlas simply point to " +
                                    "another one. This is useful if you want to be " +
                                    "able to quickly replace the contents of one " +
                                    "atlas with another one, for example for " +
                                    "swapping an SD atlas with an HD one, or " +
                                    "replacing an English atlas with a Chinese " +
                                    "one. All the sprites referencing this atlas " +
                                    "will update their references to the new one.", MessageType.Info);

            if (mReplacement != mAtlas && mAtlas.replacement != mReplacement)
            {
                NGUIEditorTools.RegisterUndo("Atlas Change", mAtlas);
                mAtlas.replacement = mReplacement;
                NGUITools.SetDirty(mAtlas);
            }
            return;
        }

        //GUILayout.Space(6f);
        Material mat = EditorGUILayout.ObjectField("Material", mAtlas.spriteMaterial, typeof(Material), false) as Material;

        if (mAtlas.spriteMaterial != mat)
        {
            NGUIEditorTools.RegisterUndo("Atlas Change", mAtlas);
            mAtlas.spriteMaterial = mat;

            // Ensure that this atlas has valid import settings
            if (mAtlas.texture != null)
            {
                NGUIEditorTools.ImportTexture(mAtlas.texture, false, false, !mAtlas.premultipliedAlpha);
            }

            mAtlas.MarkAsChanged();
        }

        if (mat != null)
        {
            TextAsset ta = EditorGUILayout.ObjectField("TP Import", null, typeof(TextAsset), false) as TextAsset;

            if (ta != null)
            {
                // Ensure that this atlas has valid import settings
                if (mAtlas.texture != null)
                {
                    NGUIEditorTools.ImportTexture(mAtlas.texture, false, false, !mAtlas.premultipliedAlpha);
                }

                NGUIEditorTools.RegisterUndo("Import Sprites", mAtlas);
                NGUIJson.LoadSpriteData(mAtlas, ta);
                if (sprite != null)
                {
                    sprite = mAtlas.GetSprite(sprite.name);
                }
                mAtlas.MarkAsChanged();
            }

            float pixelSize = EditorGUILayout.FloatField("Pixel Size", mAtlas.pixelSize, GUILayout.Width(120f));

            if (pixelSize != mAtlas.pixelSize)
            {
                NGUIEditorTools.RegisterUndo("Atlas Change", mAtlas);
                mAtlas.pixelSize = pixelSize;
            }
        }

        if (mAtlas.spriteMaterial != null)
        {
            Color blueColor  = new Color(0f, 0.7f, 1f, 1f);
            Color greenColor = new Color(0.4f, 1f, 0f, 1f);

            if (sprite == null && mAtlas.spriteList.Count > 0)
            {
                string spriteName = NGUISettings.selectedSprite;
                if (!string.IsNullOrEmpty(spriteName))
                {
                    sprite = mAtlas.GetSprite(spriteName);
                }
                if (sprite == null)
                {
                    sprite = mAtlas.spriteList[0];
                }
            }

            if (sprite != null)
            {
                if (sprite == null)
                {
                    return;
                }

                Texture2D tex = mAtlas.spriteMaterial.mainTexture as Texture2D;

                if (tex != null)
                {
                    if (!NGUIEditorTools.DrawHeader("Sprite Details"))
                    {
                        return;
                    }

                    NGUIEditorTools.BeginContents();

                    GUILayout.Space(3f);
                    NGUIEditorTools.DrawAdvancedSpriteField(mAtlas, sprite.name, SelectSprite, true);
                    GUILayout.Space(6f);

                    GUI.changed = false;

                    GUI.backgroundColor = greenColor;
                    NGUIEditorTools.IntVector sizeA = NGUIEditorTools.IntPair("Dimensions", "X", "Y", sprite.x, sprite.y);
                    NGUIEditorTools.IntVector sizeB = NGUIEditorTools.IntPair(null, "Width", "Height", sprite.width, sprite.height);

                    EditorGUILayout.Separator();
                    GUI.backgroundColor = blueColor;
                    NGUIEditorTools.IntVector borderA = NGUIEditorTools.IntPair("Border", "Left", "Right", sprite.borderLeft, sprite.borderRight);
                    NGUIEditorTools.IntVector borderB = NGUIEditorTools.IntPair(null, "Bottom", "Top", sprite.borderBottom, sprite.borderTop);

                    EditorGUILayout.Separator();
                    GUI.backgroundColor = Color.white;
                    NGUIEditorTools.IntVector padA = NGUIEditorTools.IntPair("Padding", "Left", "Right", sprite.paddingLeft, sprite.paddingRight);
                    NGUIEditorTools.IntVector padB = NGUIEditorTools.IntPair(null, "Bottom", "Top", sprite.paddingBottom, sprite.paddingTop);

                    if (GUI.changed)
                    {
                        NGUIEditorTools.RegisterUndo("Atlas Change", mAtlas);

                        sprite.x      = sizeA.x;
                        sprite.y      = sizeA.y;
                        sprite.width  = sizeB.x;
                        sprite.height = sizeB.y;

                        sprite.paddingLeft   = padA.x;
                        sprite.paddingRight  = padA.y;
                        sprite.paddingBottom = padB.x;
                        sprite.paddingTop    = padB.y;

                        sprite.borderLeft   = borderA.x;
                        sprite.borderRight  = borderA.y;
                        sprite.borderBottom = borderB.x;
                        sprite.borderTop    = borderB.y;

                        MarkSpriteAsDirty();
                    }

                    GUILayout.Space(3f);

                    GUILayout.BeginHorizontal();

                    if (GUILayout.Button("Duplicate"))
                    {
                        UIAtlasMaker.SpriteEntry se = UIAtlasMaker.DuplicateSprite(mAtlas, sprite.name);
                        if (se != null)
                        {
                            NGUISettings.selectedSprite = se.name;
                        }
                    }

                    if (GUILayout.Button("Save As..."))
                    {
#if UNITY_3_5
                        string path = EditorUtility.SaveFilePanel("Save As",
                                                                  NGUISettings.currentPath, sprite.name + ".png", "png");
#else
                        string path = EditorUtility.SaveFilePanelInProject("Save As",
                                                                           sprite.name + ".png", "png",
                                                                           "Extract sprite into which file?", NGUISettings.currentPath);
#endif

                        if (!string.IsNullOrEmpty(path))
                        {
                            NGUISettings.currentPath = System.IO.Path.GetDirectoryName(path);
                            UIAtlasMaker.SpriteEntry se = UIAtlasMaker.ExtractSprite(mAtlas, sprite.name);

                            if (se != null)
                            {
                                byte[] bytes = se.tex.EncodeToPNG();
                                File.WriteAllBytes(path, bytes);
                                AssetDatabase.ImportAsset(path);
                                if (se.temporaryTexture)
                                {
                                    DestroyImmediate(se.tex);
                                }
                            }
                        }
                    }
                    GUILayout.EndHorizontal();
                    NGUIEditorTools.EndContents();
                }

                if (NGUIEditorTools.DrawHeader("Modify"))
                {
                    NGUIEditorTools.BeginContents();

                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Space(20f);
                    EditorGUILayout.BeginVertical();

                    NGUISettings.backgroundColor = EditorGUILayout.ColorField("Background", NGUISettings.backgroundColor);

                    if (GUILayout.Button("Add a Shadow"))
                    {
                        AddShadow(sprite);
                    }
                    if (GUILayout.Button("Add a Soft Outline"))
                    {
                        AddOutline(sprite);
                    }

                    if (GUILayout.Button("Add a Transparent Border"))
                    {
                        AddTransparentBorder(sprite);
                    }
                    if (GUILayout.Button("Add a Clamped Border"))
                    {
                        AddClampedBorder(sprite);
                    }
                    if (GUILayout.Button("Add a Tiled Border"))
                    {
                        AddTiledBorder(sprite);
                    }
                    EditorGUI.BeginDisabledGroup(!sprite.hasBorder);
                    if (GUILayout.Button("Crop Border"))
                    {
                        CropBorder(sprite);
                    }
                    EditorGUI.EndDisabledGroup();

                    EditorGUILayout.EndVertical();
                    GUILayout.Space(20f);
                    EditorGUILayout.EndHorizontal();

                    NGUIEditorTools.EndContents();
                }

                if (NGUIEditorTools.previousSelection != null)
                {
                    GUILayout.Space(3f);
                    GUI.backgroundColor = Color.green;

                    if (GUILayout.Button("<< Return to " + NGUIEditorTools.previousSelection.name))
                    {
                        NGUIEditorTools.SelectPrevious();
                    }
                    GUI.backgroundColor = Color.white;
                }

                if (NGUIEditorTools.DrawHeader("Texture Optimization"))
                {
                    NGUIEditorTools.BeginContents();

                    GUILayout.Space(3f);

                    EditorGUILayout.BeginHorizontal();
                    NGUIEditorTools.DrawPadding();
                    TextureCompressionQuality afterType = (TextureCompressionQuality)EditorGUILayout.EnumPopup("Quality Type", NGUIEditorTools.mTextureType);
                    NGUIEditorTools.DrawPadding();

                    if (afterType != NGUIEditorTools.mTextureType)
                    {
                        NGUIEditorTools.mTextureType = afterType;
                    }

                    EditorGUILayout.EndHorizontal();
                    EditorGUILayout.BeginHorizontal();

                    NGUIEditorTools.DrawPadding();

                    EditorGUILayout.BeginVertical();
                    EditorGUI.BeginDisabledGroup(mat.shader.name != "My Shaders/UITextureBinding");
                    if (GUILayout.Button("원본 사용"))
                    {
                        NGUIEditorTools.SetTextureOptimization(mAtlas, false);
                    }
                    EditorGUI.EndDisabledGroup();
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.BeginVertical();
                    EditorGUI.BeginDisabledGroup(mat.shader.name != "Unlit/Transparent Colored");
                    if (GUILayout.Button("최적화 사용"))
                    {
                        NGUIEditorTools.SetTextureOptimization(mAtlas, true);
                    }
                    EditorGUI.EndDisabledGroup();
                    EditorGUILayout.EndVertical();
                    NGUIEditorTools.DrawPadding();
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.BeginHorizontal();
                    NGUIEditorTools.DrawPadding();
                    EditorGUILayout.BeginVertical();
                    if (GUILayout.Button("전체 원본으로"))
                    {
                        string[] aAtlasFiles = Directory.GetFiles("Assets/Resources/Prefabs/UI_Data/UI_Atlas", "*.prefab", SearchOption.AllDirectories);

                        for (int i = 0; i < aAtlasFiles.Length; ++i)
                        {
                            EditorUtility.DisplayProgressBar("Texture Optimization", "Combine...", ((i + 1) / (float)aAtlasFiles.Length));
                            UIAtlas sourceAtlas = (UIAtlas)AssetDatabase.LoadAssetAtPath(aAtlasFiles[i], typeof(UIAtlas)) as UIAtlas;

                            NGUIEditorTools.SetTextureOptimization(sourceAtlas, false);
                        }
                        EditorUtility.ClearProgressBar();
                    }
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.BeginVertical();

                    if (GUILayout.Button("전체 최적화"))
                    {
                        string[] aAtlasFiles = Directory.GetFiles("Assets/Resources/Prefabs/UI_Data/UI_Atlas", "*.prefab", SearchOption.AllDirectories);

                        for (int i = 0; i < aAtlasFiles.Length; ++i)
                        {
                            EditorUtility.DisplayProgressBar("Texture Optimization", string.Format("Devide..."), ((i + 1) / (float)aAtlasFiles.Length));

                            UIAtlas sourceAtlas = (UIAtlas)AssetDatabase.LoadAssetAtPath(aAtlasFiles[i], typeof(UIAtlas)) as UIAtlas;
                            shaderTextureBinding = shaderTextureBinding == null?Shader.Find("My Shaders/UITextureBinding") : shaderTextureBinding;

                            sourceAtlas.spriteMaterial.shader = shaderTextureBinding;
                            NGUIEditorTools.CopyAndChangeTexture(sourceAtlas, true);
                            sourceAtlas = (UIAtlas)AssetDatabase.LoadAssetAtPath(aAtlasFiles[i], typeof(UIAtlas)) as UIAtlas;
                            NGUIEditorTools.CopyAndChangeTexture(sourceAtlas, false);
                        }
                        EditorUtility.ClearProgressBar();
                    }
                    EditorGUILayout.EndVertical();
                    NGUIEditorTools.DrawPadding();
                    EditorGUILayout.EndHorizontal();

                    EditorGUILayout.HelpBox("Quality Type : 텍스쳐의 Compression Quality (Best는 속도가 느리기 때문에 빌드할 때만 한다.)\n" +
                                            "원본, 최적화 사용 : 해당 아틀라스의 텍스쳐를 원본, 최적화 상태로 변경한다.\n" +
                                            "전체 원본, 전체 최적화 : UI_Atlas 폴더에 있는 모든 아틀라스를 일괄 원본, 최적화 상태로 변경한다.", MessageType.Info);

                    NGUIEditorTools.EndContents();
                }
            }
        }
    }