Example #1
0
    public override void OnInspectorGUI()
    {
        Event current = Event.current;

        base.serializedObject.Update();

        if (TexturePackTool.DrawHeader("基础信息", true))
        {
            EditorGUILayout.PropertyField(this.m_SpriteAtlas, new GUIContent("合图"));
            EditorGUILayout.PropertyField(this.m_Material, new GUIContent("材质球"));
        }

        //if (DrawTextToggle("Sprite Info"))
        //{
        //    EditorGUI.indentLevel = 1;
        //    EditorGUI.BeginChangeCheck();
        //    EditorGUILayout.PropertyField(this.m_SpriteAtlas, new GUIContent("Sprite Atlas"));
        //    if (EditorGUI.EndChangeCheck())
        //    {
        //        Texture2D texture2D = this.m_SpriteAtlas.objectReferenceValue as Texture2D;
        //        if (texture2D != null)
        //        {
        //            Material material = this.m_Material.objectReferenceValue as Material;
        //            if (material != null)
        //            {
        //                material.mainTexture = texture2D;
        //            }
        //        }
        //    }
        //    GUI.enabled = true;
        //    EditorGUILayout.PropertyField(this.m_Material, new GUIContent("Default Material"), new GUILayoutOption[0]);
        //}

        if (TexturePackTool.DrawHeader("已分组", true))
        {
            selectGroup = EditorGUILayout.Popup("分组", selectGroup, m_GroupOption.ToArray());
            string groupKey = m_GroupOption[selectGroup];
            if (string.IsNullOrEmpty(groupKey) || !m_FontSpriteListDic.ContainsKey(groupKey))
            {
                return;
            }
            texPos = new Vector2(8, 30);
            List <BMFontSprite> list = m_FontSpriteListDic[groupKey];

            scrollPos = GUILayout.BeginScrollView(scrollPos, new GUIStyle("box"));
            for (int idx = 0; idx < list.Count; idx++)
            {
                OnFontSpriteElementGUI(list[idx]);
            }

            GUILayout.EndScrollView();
        }
    }
Example #2
0
    private void OnFontSpriteElementGUI(BMFontSprite element)
    {
        Rect    rect   = EditorGUILayout.BeginVertical("box");
        float   x      = element.x;
        float   y      = element.y;
        float   width  = element.width;
        float   height = element.height;
        Vector2 pivot  = element.pivot;
        string  key    = element.key;

        Texture2D spriteSheet = this.m_SpriteAtlas.objectReferenceValue as Texture2D;

        if (spriteSheet == null)
        {
            Debug.LogWarning("Please assign a valid Sprite Atlas texture to the [" + serializedObject.targetObject.name + "] Sprite Asset.", serializedObject.targetObject);
            return;
        }

        Texture2D tex = null;

        if (SpriteDic.ContainsKey(element.name))
        {
            tex = SpriteDic[element.name];
        }
        else
        {
            tex = new Texture2D((int)element.width, (int)element.height);
            Color[] colors = spriteSheet.GetPixels((int)element.x, (int)element.y, (int)element.width, (int)element.height);
            tex.SetPixels(0, 0, (int)element.width, (int)element.height, colors);

            tex = TexturePackTool.ScaleTextureBilinear(tex, 2);
            tex.Apply();
            SpriteDic.Add(element.name, tex);
        }


        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("ID: " + element.id);
        GUILayout.Space(10);
        GUILayout.Label(element.name);
        GUILayout.FlexibleSpace();
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        GUILayout.Label(tex, GUILayout.Width(80), GUILayout.Height(80));
        EditorGUILayout.BeginVertical();
        GUILayout.Space(8);


        EditorGUILayout.BeginHorizontal();
        GUILayout.Label(" Group: ");
        GUILayout.TextField(element.group);
        EditorGUILayout.EndHorizontal();


        EditorGUI.BeginChangeCheck();

        EditorGUILayout.BeginHorizontal();
        GUILayout.Label(" Key: ");
        element.key = EditorGUILayout.TextField(element.key);
        EditorGUILayout.EndHorizontal();
        if (EditorGUI.EndChangeCheck())
        {
            if (m_FontSpriteListDic.ContainsKey(element.group))
            {
                List <BMFontSprite> tempGroup = m_FontSpriteListDic[element.group];
                for (int i = 0; i < tempGroup.Count; i++)
                {
                    if (tempGroup[i].key == element.key)
                    {
                        Debug.LogError("KEY 冲突");
                        break;
                    }
                }
            }
        }

        GUILayout.Label(string.Format(" Size  : W: {0}    H: {1}", element.width, element.height));
        GUILayout.Label(string.Format(" Pivot : X: {0}    Y: {1}", element.pivot.x, element.pivot.y));
        GUILayout.Label(string.Format(" UV   : X: {0}  Y: {1}  W: {2}  H: {3}", element.x, element.y, element.width, element.height));

        EditorGUILayout.EndVertical();

        EditorGUILayout.EndHorizontal();

        GUILayout.Space(10);
        EditorGUILayout.EndVertical();
    }