Пример #1
0
        public static UISprite ConvertToSprite(this UITexture tex)
        {
            Vector3    pos    = tex.transform.localPosition;
            GameObject obj    = tex.gameObject;
            int        depth  = tex.depth;
            int        width  = tex.width;
            int        height = tex.height;
            Vector4    border = tex.border;

            UIWidget.Pivot pivot = tex.pivot;
            string         name  = tex.mainTexture != null ? tex.mainTexture.name: string.Empty;

            UIBasicSprite.Type spriteType = tex.type;
            Color c = tex.color;

            UIBasicSprite.Flip flip = tex.flip;
            tex.DestroyEx();
            UISprite s = obj.FindComponent <UISprite>();

            s.type       = spriteType;
            s.spriteName = name;
            s.depth      = depth;
            s.width      = width;
            s.height     = height;
            s.flip       = flip;
            s.color      = c;
            s.pivot      = pivot;
            s.GetAtlasSprite().borderLeft   = (int)border.x;
            s.GetAtlasSprite().borderTop    = (int)border.y;
            s.GetAtlasSprite().borderRight  = (int)border.z;
            s.GetAtlasSprite().borderBottom = (int)border.w;
            s.transform.localPosition = pos;
            return(s);
        }
Пример #2
0
    static int set_type(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            UIBasicSprite      obj  = (UIBasicSprite)o;
            UIBasicSprite.Type arg0 = (UIBasicSprite.Type)ToLua.CheckObject(L, 2, typeof(UIBasicSprite.Type));
            obj.type = arg0;
            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index type on a nil value" : e.Message));
        }
    }
Пример #3
0
    static int get_type(IntPtr L)
    {
        object o = null;

        try
        {
            o = ToLua.ToObject(L, 1);
            UIBasicSprite      obj = (UIBasicSprite)o;
            UIBasicSprite.Type ret = obj.type;
            ToLua.Push(L, ret);
            return(1);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e, o == null ? "attempt to index type on a nil value" : e.Message));
        }
    }
Пример #4
0
    public override void SubReset()
    {
        Name   = "Background";
        Width  = 140;
        Height = 45;

        Sprite_Type           = UIBasicSprite.Type.Sliced;
        Flip_Type             = UIBasicSprite.Flip.Nothing;
        FillDirection_Type    = UIBasicSprite.FillDirection.Horizontal;
        Center_Type           = UIBasicSprite.AdvancedType.Sliced;
        Left_Type             = UIBasicSprite.AdvancedType.Sliced;
        Right_Type            = UIBasicSprite.AdvancedType.Sliced;
        Bottom_Type           = UIBasicSprite.AdvancedType.Sliced;
        Top_Type              = UIBasicSprite.AdvancedType.Sliced;
        Gradient              = false;
        Gradient_Top_Color    = Color.white;
        Gradient_Bottom_Color = new Color(0.7f, 0.7f, 0.7f);
    }
Пример #5
0
    private static int set_type(IntPtr L)
    {
        object obj = null;
        int    result;

        try
        {
            obj = ToLua.ToObject(L, 1);
            UIBasicSprite      uIBasicSprite = (UIBasicSprite)obj;
            UIBasicSprite.Type type          = (UIBasicSprite.Type)((int)ToLua.CheckObject(L, 2, typeof(UIBasicSprite.Type)));
            uIBasicSprite.type = type;
            result             = 0;
        }
        catch (Exception ex)
        {
            result = LuaDLL.toluaL_exception(L, ex, (obj != null) ? ex.Message : "attempt to index type on a nil value");
        }
        return(result);
    }
Пример #6
0
        public static UITexture ConvertToTexture(this UISprite s)
        {
            int depth  = s.depth;
            int width  = s.width;
            int height = s.height;

            UIBasicSprite.Flip flip       = s.flip;
            UIBasicSprite.Type spriteType = s.type;
            GameObject         obj        = s.gameObject;

            s.DestroyEx();
            UITexture tex = obj.FindComponent <UITexture>();

            tex.depth  = depth;
            tex.width  = width;
            tex.height = height;
            tex.flip   = flip;
            tex.type   = spriteType;
            return(tex);
        }
Пример #7
0
    private void OnGUI()
    {
        EditorGUILayout.BeginVertical("Box");
        {
            GUILayout.Label("此批处理器作用:美术出图时没考虑使用9宫格省资源,但很多prefab已使用着不是\n9宫的碎图,这时美术重新出了新的用9宫碎图,一个个替换容易出漏,故写此工具");
            mAtlas      = EditorGUILayout.TextField("图集名:", mAtlas);
            mSprite     = EditorGUILayout.TextField("碎图名:", mSprite);
            mSpriteType = (UISpriteType)EditorGUILayout.EnumPopup("UISprite的Type属性", mSpriteType);
            if (GUILayout.Button("检测碎图有无被prefab使用过(看输出log)", GUILayout.Height(30)))
            {
                Debug.Log(mAtlas + mSprite + mSpriteType);
                var tPrefabs = GetFindAllUsing(mAtlas, mSprite, false, mSpriteType, null, "", true);
                if (tPrefabs.Count <= 0)
                {
                    Debug.Log("并没有使用过该碎图,图集名=" + mAtlas + ",碎图名=" + mSprite); return;
                }
                Debug.Log("总共有" + tPrefabs.Count + "个prefab使用着");
            }
            if (GUILayout.Button("使所有prefab的碎图全使用" + mSpriteType.ToString(), GUILayout.Height(30)))
            {
                var tPrefabs = GetFindAllUsing(mAtlas, mSprite, false, mSpriteType, null, "", false);
                if (tPrefabs.Count == 0)
                {
                    Debug.Log("并没有使用过该碎图");
                }
                ApplySavePrefab(tPrefabs);
            }
        }

        EditorGUILayout.EndVertical(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space();

        EditorGUILayout.BeginVertical("Box");
        {
            GUILayout.Label("检测图集里面有无被prefab引用.\neg:Common图集太大了,有些碎图根本就没被使用过,然而还打在图集里,浪费空间");
            mCheckAtlas     = EditorGUILayout.TextField("图集名:", mCheckAtlas);
            mIsSelectDelete = EditorGUILayout.Toggle("是否无引用碎图删除", mIsSelectDelete);
            if (GUILayout.Button("检测" + (mIsSelectDelete ? "时并删除无引用的碎图" : "无引用的碎图"), GUILayout.Height(30)))
            {
                var tTextures = new List <Texture>();
                var tPath     = AssetDatabase.FindAssets("t:Texture", new string[] { "Assets/UI/Atlas/" + mCheckAtlas + "/imgs/" });
                for (int i = 0; i < tPath.Length; i++)
                {
                    tTextures.Add(AssetDatabase.LoadMainAssetAtPath(AssetDatabase.AssetPathToGUID(tPath[i])) as Texture);
                }
                int tCount = 0;
                for (int i = 0; i < tTextures.Count; i++)
                {
                    var tItem = tTextures[i];
                    if (GetFindAllUsing(mCheckAtlas, tItem.name, false, mSpriteType).Count <= 0)
                    {
                        tCount++;
                        Debug.Log("并没使用过该碎图,所在的图集名=" + mCheckAtlas + ",碎图名=" + tItem.name + ",count=" + tCount);
                        if (mIsSelectDelete)
                        {
                            File.Delete(Application.dataPath + "/UI/Atlas/" + mCheckAtlas + "/imgs/" + tItem.name + ".png");
                        }
                    }
                }
                Debug.Log("原图集有" + tTextures.Count + "张碎图,无引用的有" + tCount + "张");
                if (tCount > 0 && mIsSelectDelete)
                {
                    Debug.LogError("删除了" + tCount + "张碎图,现还有" + (tTextures.Count - tCount) + "张碎图,请打开TP工具重新生成下吧,并应用下吧");
                }
            }
        }

        EditorGUILayout.EndVertical(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space();

        EditorGUILayout.BeginVertical("Box");
        {
            GUILayout.Label("eg:工程中有三个Common图集 都有同一个资源,为省空间面打算\n不使用另两个图集,则去检测图集并把prefab的引用都指定同一个图集");
            mOldAtlas  = EditorGUILayout.TextField("原图集名:", mOldAtlas);
            mOldSprite = EditorGUILayout.TextField("原碎图名:", mOldSprite);
            mNewAltas  = EditorGUILayout.TextField("将使用的图集名:", mNewAltas);
            mNewSprite = EditorGUILayout.TextField("将使用的碎图名:", mNewSprite);
            if (GUILayout.Button("替换prefab到新图集", GUILayout.Height(30)))
            {
                var     tFindOld = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/UI/Atlas/" + mOldAtlas });
                var     tFindNew = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/UI/Atlas/" + mNewAltas });
                UIAtlas tNewAtlas = null, tOldAtlas = null;
                if (tFindNew != null && tFindNew.Length == 1)
                {
                    var newGo = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(tFindNew[0])) as GameObject;
                    tNewAtlas = newGo.GetComponent <UIAtlas>();
                }
                if (tFindOld != null && tFindOld.Length == 1)
                {
                    var oldGo = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(tFindOld[0])) as GameObject;
                    tOldAtlas = oldGo.GetComponent <UIAtlas>();
                }
                if (tNewAtlas == null || tOldAtlas == null || tOldAtlas == tNewAtlas)
                {
                    Debug.LogError("图集没加载出来,检测是否正确输入吧");
                    return;
                }
                var tPrefabs = GetFindAllUsing(mOldAtlas, mOldSprite, false, mSpriteType, tNewAtlas, mNewSprite);
                if (tPrefabs.Count <= 0)
                {
                    Debug.Log("旧图集并没有使用过该碎图,旧图集名=" + mOldAtlas + ",碎图名=" + mOldSprite); return;
                }
                ApplySavePrefab(tPrefabs);
            }
        }
        EditorGUILayout.EndVertical();
    }
Пример #8
0
    private List <GameObject> GetFindAllUsing(string pAltas, string pSprite, bool pChageType, UISpriteType pTargetType, UIAtlas pNewAltas = null, string pNewSprite = "", bool plog = false)
    {
        var tAllPrefab  = new List <GameObject>();
        var tSearchPath = AssetDatabase.FindAssets("t:Prefab", new string[] { "Assets/UI/Prefab" });

        for (int i = 0; i < tSearchPath.Length; i++)
        {
            tAllPrefab.Add(AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(tSearchPath[i])) as GameObject);
        }
        var tWillChangePrefabs = new List <GameObject>();

        for (int i = 0; i < tAllPrefab.Count; i++)
        {
            var tPrefab       = tAllPrefab[i];
            var tSpriteChilds = tPrefab.GetComponentsInChildren <UISprite>(true);
            for (int j = 0; j < tSpriteChilds.Length; j++)
            {
                var tSpriteChild = tSpriteChilds[i];
                if (tSpriteChild.atlas != null && tSpriteChild.atlas.name.Equals(pAltas) && tSpriteChild.spriteName.Contains(pSprite))
                {
                    if (plog)//输出
                    {
                        Debug.Log("输出,prefab=" + tPrefab + ",所在的挂点=" + tSpriteChild.name);
                    }
                    if (tWillChangePrefabs.Contains(tPrefab) == false)//检测得到的prefab总数
                    {
                        tWillChangePrefabs.Add(tPrefab);
                    }
                    if (pChageType && tSpriteChild.type != pTargetType)//改变spriteType
                    {
                        tSpriteChild.type = pTargetType;
                    }

                    if (pNewAltas != null && pNewAltas.name != pAltas)
                    {
                        tSpriteChild.atlas = pNewAltas;
                        if (string.IsNullOrEmpty(pNewSprite) == false)
                        {
                            tSpriteChild.spriteName = pNewSprite;
                        }
                    }
                }
            }
        }
        return(tWillChangePrefabs);
    }
Пример #9
0
    // Token: 0x060008DE RID: 2270 RVA: 0x00046B40 File Offset: 0x00044D40
    public void AddSprite(object id, string spriteName, Vector2 pos, float width, float height, Color32 color, Vector2 pivot, float rot = 0f, UIBasicSprite.Type type = UIBasicSprite.Type.Simple, UIBasicSprite.Flip flip = UIBasicSprite.Flip.Nothing, bool enabled = true)
    {
        if (this.mAtlas == null)
        {
            Debug.LogError("Atlas must be assigned first");
            return;
        }
        UISpriteCollection.Sprite sprite = default(UISpriteCollection.Sprite);
        INGUIAtlas atlas = this.atlas;

        if (atlas != null)
        {
            sprite.sprite = atlas.GetSprite(spriteName);
        }
        if (sprite.sprite == null)
        {
            return;
        }
        sprite.pos        = pos;
        sprite.rot        = rot;
        sprite.width      = width;
        sprite.height     = height;
        sprite.color      = color;
        sprite.pivot      = pivot;
        sprite.type       = type;
        sprite.flip       = flip;
        sprite.enabled    = enabled;
        this.mSprites[id] = sprite;
        if (enabled && !this.mChanged)
        {
            this.MarkAsChanged();
        }
    }
Пример #10
0
    public override void DrawSubProperty()
    {
        state = UIModifierUtils.DrawContentHeader("UISprite", state);
        if (state)
        {
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Atlas", "DropDown", GUILayout.Width(70)))
            {
                ComponentSelector.Show <UIAtlas>(OnSelectAtlas);
            }
            EditorGUILayout.ObjectField(Atlas, typeof(UIFont), false);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Sprite", "DropDown", GUILayout.Width(70)))
            {
                NGUISettings.atlas          = Atlas;
                NGUISettings.selectedSprite = Sprite_Name;
                SpriteSelector.Show(SelectSprite);
            }
            GUILayout.Label(Sprite_Name, "HelpBox", GUILayout.Height(18f));
            GUILayout.Space(18f);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.BeginVertical();
            {
                Flip_Type = (UIBasicSprite.Flip)EditorGUILayout.EnumPopup("Flip", Flip_Type);

                Sprite_Type = (UIBasicSprite.Type)EditorGUILayout.EnumPopup("Sprite Type", Sprite_Type);

                EditorGUI.indentLevel++;
                {
                    if (Sprite_Type == UISprite.Type.Simple)
                    {
                        GUILayout.BeginHorizontal();
                        Gradient = EditorGUILayout.Toggle("Gradient", Gradient, GUILayout.Width(80));
                        EditorGUI.BeginDisabledGroup(!Gradient);
                        {
                            EditorGUIUtility.labelWidth = 40;
                            Gradient_Top_Color          = EditorGUILayout.ColorField("Top", Gradient_Top_Color, GUILayout.MinWidth(60));
                            GUILayout.EndHorizontal();

                            GUILayout.BeginHorizontal();
                            GUILayout.Label(" ", GUILayout.Width(80));
                            Gradient_Bottom_Color       = EditorGUILayout.ColorField("Bottom", Gradient_Bottom_Color, GUILayout.MinWidth(60));
                            EditorGUIUtility.labelWidth = 70;
                        }
                        EditorGUI.EndDisabledGroup();
                        GUILayout.EndHorizontal();
                    }
                    else if (Sprite_Type == UISprite.Type.Tiled)
                    {
                    }
                    else if (Sprite_Type == UISprite.Type.Sliced)
                    {
                        Fill_Center = EditorGUILayout.Toggle("Fill Center", Fill_Center);

                        GUILayout.BeginHorizontal();
                        Gradient = EditorGUILayout.Toggle("Gradient", Gradient, GUILayout.Width(80));
                        EditorGUI.BeginDisabledGroup(!Gradient);
                        {
                            Gradient_Top_Color = EditorGUILayout.ColorField("Top", Gradient_Top_Color, GUILayout.MinWidth(60));
                            GUILayout.EndHorizontal();

                            GUILayout.BeginHorizontal();
                            GUILayout.Label(" ", GUILayout.Width(80));
                            Gradient_Bottom_Color = EditorGUILayout.ColorField("Bottom", Gradient_Bottom_Color, GUILayout.MinWidth(60));
                        }
                        EditorGUI.EndDisabledGroup();
                        GUILayout.EndHorizontal();
                    }
                    else if (Sprite_Type == UISprite.Type.Filled)
                    {
                        FillDirection_Type = (UIBasicSprite.FillDirection)EditorGUILayout.EnumPopup("Flip", FillDirection_Type, GUILayout.MinWidth(20f));
                        Fill_Amount        = EditorGUILayout.Slider("Amount", Fill_Amount, 0, 1f, GUILayout.MinWidth(20f));
                        Invert             = EditorGUILayout.Toggle("Invert", Invert);
                    }
                    else if (Sprite_Type == UISprite.Type.Advanced)
                    {
                        Left_Type   = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Left", Left_Type);
                        Right_Type  = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Right", Right_Type);
                        Bottom_Type = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Bottom", Bottom_Type);
                        Top_Type    = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Top", Top_Type);
                        Center_Type = (UIBasicSprite.AdvancedType)EditorGUILayout.EnumPopup("Center", Center_Type);;
                    }
                }
                EditorGUI.indentLevel--;
            }
            GUILayout.EndVertical();
            GUILayout.Space(18);
            GUILayout.EndHorizontal();
        }
    }