示例#1
0
    private string GetOutputText()
    {
        _imagesTagInfoList.Clear();
        IList <UIVertex> verts       = cachedTextGenerator.verts;
        StringBuilder    textBuilder = new StringBuilder();
        int textIndex = 0;

        foreach (Match match in _inputRegex.Matches(text))
        {
            int tempId = 0;
            if (!string.IsNullOrEmpty(match.Groups[1].Value) && !match.Groups[1].Value.Equals("-"))
            {
                tempId = int.Parse(match.Groups[1].Value);
            }
            string tempTag = match.Groups[2].Value;
            //更新超链接
            if (tempId < 0)
            {
                textBuilder.Append(text.Substring(textIndex, match.Index - textIndex));
                textBuilder.Append("<color=blue>");
                int _startIndex = textBuilder.Length * 4;
                textBuilder.Append("[" + match.Groups[2].Value + "]");
                int _endIndex = textBuilder.Length * 4 - 2;
                textBuilder.Append("</color>");

                var hrefInfo = new HrefInfo
                {
                    id         = Mathf.Abs(tempId),
                    startIndex = _startIndex, // 超链接里的文本起始顶点索引
                    endIndex   = _endIndex,
                    name       = match.Groups[2].Value
                };
                _listHrefInfos.Add(hrefInfo);
            }
            //更新表情
            else
            {
                textBuilder.Append(text.Substring(textIndex, match.Index - textIndex));

                SpriteAsset      spriteAsset = SpriteFaceCache.GetAsset(tempId);
                SpriteInforGroup tempGroup   = SpriteFaceCache.GetAsset(tempId, tempTag);
                float            imgSize     = spriteAsset == null ? 24.0f : spriteAsset.size;
                float            imgWidth    = spriteAsset == null ? 1.0f : spriteAsset.width;

                int vertexIndex = textBuilder.Length * 4;
                textBuilder.Append(@"<quad size=" + imgSize + " width=" + imgWidth + " />");
                SpriteTagInfo spInfo = new SpriteTagInfo();
                spInfo.vertId = vertexIndex;
                spInfo.faceId = tempId;
                spInfo.action = tempTag;
                spInfo.size   = new Vector2(imgSize * imgWidth, imgSize);
                _imagesTagInfoList.Add(spInfo);
            }

            textIndex = match.Index + match.Length;
        }

        textBuilder.Append(text.Substring(textIndex, text.Length - textIndex));
        return(textBuilder.ToString());
    }
示例#2
0
    public static List <SpriteInforGroup> GetAssetSpriteInfor(Texture2D tex)
    {
        List <SpriteInforGroup> _listGroup = new List <SpriteInforGroup>();
        string filePath = UnityEditor.AssetDatabase.GetAssetPath(tex);

        Object[] objects = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(filePath);

        List <SpriteInfor> _tempSprite = new List <SpriteInfor>();

        Vector2 _texSize = new Vector2(tex.width, tex.height);

        for (int i = 0; i < objects.Length; i++)
        {
            if (objects[i].GetType() != typeof(Sprite))
            {
                continue;
            }
            SpriteInfor temp   = new SpriteInfor();
            Sprite      sprite = objects[i] as Sprite;
            temp.ID     = i;
            temp.name   = sprite.name;
            temp.pivot  = sprite.pivot;
            temp.rect   = sprite.rect;
            temp.sprite = sprite;
            string tagName = sprite.name;
            if (_isAutoGroup)
            {
                tagName = getGroupName(tagName);
            }
            temp.tag = tagName;
            temp.uv  = GetSpriteUV(_texSize, sprite.rect);
            _tempSprite.Add(temp);
        }

        for (int i = 0; i < _tempSprite.Count; i++)
        {
            SpriteInforGroup _tempGroup = new SpriteInforGroup();
            _tempGroup.tag = _tempSprite[i].tag;
            //_tempGroup.size = 24.0f;
            //_tempGroup.width = 1.0f;
            _tempGroup.listSpriteInfor = new List <SpriteInfor>();
            _tempGroup.listSpriteInfor.Add(_tempSprite[i]);
            for (int j = i + 1; j < _tempSprite.Count; j++)
            {
                if (_tempGroup.tag == _tempSprite[j].tag)
                {
                    _tempGroup.listSpriteInfor.Add(_tempSprite[j]);
                    _tempSprite.RemoveAt(j);
                    j--;
                }
            }
            _listGroup.Add(_tempGroup);
            _tempSprite.RemoveAt(i);
            i--;
        }

        return(_listGroup);
    }
示例#3
0
 //设置动画 动作
 public void setIndexAction(int index, string action)
 {
     if (m_index == index && m_actoin == action)
     {
         return;
     }
     m_index    = index;
     m_actoin   = action;
     _infoGroup = SpriteFaceCache.GetAsset(m_index, m_actoin);
     tickTime   = SpriteFaceCache.GetAsset(m_index).tickTime;
 }
 static public int get_width(IntPtr l)
 {
     try {
         SpriteInforGroup self = (SpriteInforGroup)checkSelf(l);
         pushValue(l, true);
         pushValue(l, self.width);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int constructor(IntPtr l)
 {
     try {
         SpriteInforGroup o;
         o = new SpriteInforGroup();
         pushValue(l, true);
         pushValue(l, o);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
示例#6
0
    /// <summary>
    /// 新增标签
    /// </summary>
    private void AddTagSure()
    {
        SpriteInforGroup sig = new SpriteInforGroup();

        sig.Tag             = _addTagName;
        sig.ListSpriteInfor = new List <SpriteInfor>();

        _spriteAsset.ListSpriteGroup.Insert(0, sig);

        Init();

        EditorUtility.SetDirty(_spriteAsset);
    }
 static public int set_listSpriteInfor(IntPtr l)
 {
     try {
         SpriteInforGroup self = (SpriteInforGroup)checkSelf(l);
         System.Collections.Generic.List <SpriteInfor> v;
         checkType(l, 2, out v);
         self.listSpriteInfor = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 static public int set_tag(IntPtr l)
 {
     try {
         SpriteInforGroup self = (SpriteInforGroup)checkSelf(l);
         System.String    v;
         checkType(l, 2, out v);
         self.tag = v;
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
示例#9
0
    public static List <SpriteInforGroup> GetAssetSpriteInfor(Texture2D tex)
    {
        List <SpriteInforGroup> _listGroup = new List <SpriteInforGroup>();
        string filePath = UnityEditor.AssetDatabase.GetAssetPath(tex);

        Object[] objects = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(filePath);

        List <SpriteInfor> _tempSprite = new List <SpriteInfor>();

        for (int i = 0; i < objects.Length; i++)
        {
            if (objects[i].GetType() != typeof(Sprite))
            {
                continue;
            }
            SpriteInfor temp   = new SpriteInfor();
            Sprite      sprite = objects[i] as Sprite;
            temp.ID     = i;
            temp.name   = sprite.name;
            temp.pivot  = sprite.pivot;
            temp.rect   = sprite.rect;
            temp.sprite = sprite;
            temp.tag    = sprite.name;
            _tempSprite.Add(temp);
        }

        for (int i = 0; i < _tempSprite.Count; i++)
        {
            SpriteInforGroup _tempGroup = new SpriteInforGroup();
            _tempGroup.tag             = _tempSprite[i].tag;
            _tempGroup.listSpriteInfor = new List <SpriteInfor>();
            _tempGroup.listSpriteInfor.Add(_tempSprite[i]);
            for (int j = 0; j < _tempSprite.Count; j++)
            {
                if (j > i && _tempGroup.tag == _tempSprite[j].tag)
                {
                    _tempGroup.listSpriteInfor.Add(_tempSprite[j]);
                    _tempSprite.RemoveAt(j);
                    j--;
                }
            }
            _listGroup.Add(_tempGroup);
            _tempSprite.RemoveAt(i);
            i--;
        }

        return(_listGroup);
    }
示例#10
0
    static List <SpriteInforGroup> GetStaticList(List <SpriteInfor> _tempSprite)
    {
        List <SpriteInforGroup> _listGroup = new List <SpriteInforGroup>(_tempSprite.Count);

        for (int i = 0; i < _tempSprite.Count; i++)
        {
            SpriteInforGroup _tempGroup = new SpriteInforGroup();
            _tempGroup.Tag = _tempSprite[i].Tag;
            //_tempGroup.Size = 24.0f;
            //_tempGroup.Width = 1.0f;
            _tempGroup.ListSpriteInfor = new List <SpriteInfor>();
            _tempGroup.ListSpriteInfor.Add(_tempSprite[i]);
            _listGroup.Add(_tempGroup);
        }

        return(_listGroup);
    }
示例#11
0
    /// <summary>
    /// 改变sprite隶属的组
    /// </summary>
    private void ChangeTag(string newTag, SpriteInfor si)
    {
        if (newTag == si.tag)
        {
            return;
        }

        //从旧的组中移除
        SpriteInforGroup oldSpriteInforGroup = spriteAsset.listSpriteGroup.Find(
            delegate(SpriteInforGroup sig)
        {
            return(sig.tag == si.tag);
        });

        if (oldSpriteInforGroup != null && oldSpriteInforGroup.listSpriteInfor.Contains(si))
        {
            oldSpriteInforGroup.listSpriteInfor.Remove(si);
        }

        //如果旧的组为空,则删掉旧的组
        if (oldSpriteInforGroup.listSpriteInfor.Count <= 0)
        {
            spriteAsset.listSpriteGroup.Remove(oldSpriteInforGroup);
            Init();
        }

        si.tag = newTag;
        //添加到新的组
        SpriteInforGroup newSpriteInforGroup = spriteAsset.listSpriteGroup.Find(
            delegate(SpriteInforGroup sig)
        {
            return(sig.tag == newTag);
        });

        if (newSpriteInforGroup != null)
        {
            newSpriteInforGroup.listSpriteInfor.Add(si);
            newSpriteInforGroup.listSpriteInfor.Sort((a, b) => a.ID.CompareTo(b.ID));
        }

        EditorUtility.SetDirty(spriteAsset);
    }
示例#12
0
    static List <SpriteInforGroup> GetAnimationList(List <SpriteInfor> spriteList)
    {
        SortedDictionary <string, SpriteInforGroup> dic = new SortedDictionary <string, SpriteInforGroup>();

        for (int i = 0; i < spriteList.Count; i++)
        {
            string[] info = spriteList[i].Name.Split('_');
            if (info.Length != 2)
            {
                Debug.Log("sprite name format error, should be xxx_N, like happy_0, happy_1, etc");
                continue;
            }

            string tag = info[0];
            spriteList[i].Tag = tag;
            if (dic.ContainsKey(tag))
            {
                dic[tag].ListSpriteInfor.Insert(int.Parse(info[1]), spriteList[i]);
            }
            else
            {
                SpriteInforGroup group = new SpriteInforGroup();
                group.Tag             = tag;
                group.ListSpriteInfor = new List <SpriteInfor>();
                group.ListSpriteInfor.Insert(int.Parse(info[1]), spriteList[i]);
                dic.Add(tag, group);
            }
        }

        List <SpriteInforGroup> listGroup = new List <SpriteInforGroup>(dic.Count);

        foreach (var v in dic)
        {
            listGroup.Add(v.Value);
        }

        return(listGroup);
    }
示例#13
0
 void Start()
 {
     _infoGroup = SpriteFaceCache.GetAsset(m_index, m_actoin);
     tickTime   = SpriteFaceCache.GetAsset(m_index).tickTime;
 }
示例#14
0
    private string GetOutputText()
    {
        _spriteInfo = new Dictionary <int, SpriteTagInfo>();
        StringBuilder textBuilder = new StringBuilder();
        int           textIndex   = 0;

        foreach (Match match in _inputTagRegex.Matches(text))
        {
            int tempId = 0;
            if (!string.IsNullOrEmpty(match.Groups[1].Value) && !match.Groups[1].Value.Equals("-"))
            {
                tempId = int.Parse(match.Groups[1].Value);
            }
            string tempTag = match.Groups[2].Value;
            //更新超链接
            if (tempId < 0)
            {
                textBuilder.Append(text.Substring(textIndex, match.Index - textIndex));
                textBuilder.Append("<color=blue>");
                int startIndex = textBuilder.Length * 4;
                textBuilder.Append("[" + match.Groups[2].Value + "]");
                int endIndex = textBuilder.Length * 4 - 2;
                textBuilder.Append("</color>");

                var hrefInfo = new HrefInfo
                {
                    Id         = Mathf.Abs(tempId),
                    StartIndex = startIndex, // 超链接里的文本起始顶点索引
                    EndIndex   = endIndex,
                    Name       = match.Groups[2].Value
                };
                _listHrefInfos.Add(hrefInfo);
            }
            //更新表情
            else
            {
                if (!_inlineManager.IndexSpriteInfo.ContainsKey(tempId) ||
                    !_inlineManager.IndexSpriteInfo[tempId].ContainsKey(tempTag))
                {
                    continue;
                }
                SpriteInforGroup tempGroup = _inlineManager.IndexSpriteInfo[tempId][tempTag];

                textBuilder.Append(text.Substring(textIndex, match.Index - textIndex));
                int tempIndex = textBuilder.Length * 4;
                textBuilder.Append(@"<quad size=" + tempGroup.Size + " width=" + tempGroup.Width + " />");

                SpriteTagInfo tempSpriteTag = new SpriteTagInfo
                {
                    Id   = tempId,
                    Tag  = tempTag,
                    Size = new Vector2(tempGroup.Size * tempGroup.Width, tempGroup.Size),
                    Pos  = new Vector3[4],
                    Uv   = tempGroup.ListSpriteInfor[0].Uv
                };
                if (!_spriteInfo.ContainsKey(tempIndex))
                {
                    _spriteInfo.Add(tempIndex, tempSpriteTag);
                }
            }

            textIndex = match.Index + match.Length;
        }

        textBuilder.Append(text.Substring(textIndex, text.Length - textIndex));
        return(textBuilder.ToString());
    }
示例#15
0
    public override void OnInspectorGUI()
    {
        _ve2ScorllView = GUILayout.BeginScrollView(_ve2ScorllView);

        #region 标题栏
        EditorGUILayout.HelpBox("Number Of Tags:" + _spriteAsset.ListSpriteGroup.Count + "     Number Of Group:" + _spriteAsset.ListSpriteGroup.Count, MessageType.Info);

        GUILayout.BeginVertical("HelpBox");
        GUILayout.BeginHorizontal();
        _spriteAsset.Id = EditorGUILayout.IntField("ID:", _spriteAsset.Id);
        //  _playSpeed = EditorGUILayout.FloatField("FrameSpeed", _playSpeed);
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal();
        _spriteAsset.IsStatic = EditorGUILayout.Toggle("Static:", _spriteAsset.IsStatic);
        GUILayout.EndHorizontal();
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Add Tag"))
        {
            _addTag = !_addTag;
        }
        GUILayout.EndHorizontal();
        if (_addTag)
        {
            GUILayout.BeginHorizontal();
            _addTagName = EditorGUILayout.TextField(_addTagName);
            if (GUILayout.Button("sure", "minibutton"))
            {
                if (_addTagName == "")
                {
                    Debug.Log("请输入新建标签的名称!");
                }
                else
                {
                    SpriteInforGroup spriteInforGroup = _spriteAsset.ListSpriteGroup.Find(
                        delegate(SpriteInforGroup sig)
                    {
                        return(sig.Tag == _addTagName);
                    });

                    if (spriteInforGroup != null)
                    {
                        Debug.Log("该标签已存在!");
                    }
                    else
                    {
                        AddTagSure();
                    }
                }
            }
            GUILayout.EndHorizontal();
        }
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Clear Tag"))
        {
            ClearTag();
        }
        GUILayout.EndHorizontal();
        GUILayout.EndVertical();

        GUILayout.BeginHorizontal();
        GUILayout.Label("");
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
        #endregion

        for (int i = 0; i < _spriteAsset.ListSpriteGroup.Count; i++)
        {
            GUILayout.BeginHorizontal("HelpBox");
            #region 展开与收缩按钮
            if (GUILayout.Button(_spriteAsset.ListSpriteGroup[i].Tag, _showIndex == i ? "OL Minus" : "OL Plus"))
            {
                if (_showIndex == i)
                {
                    _showIndex = -1;
                }
                else
                {
                    _showIndex = i;
                }
            }
            #endregion

            GUILayout.BeginHorizontal();
            GUILayout.Label("Size:", GUILayout.Width(40));
            _spriteAsset.ListSpriteGroup[i].Size = EditorGUILayout.FloatField("", _spriteAsset.ListSpriteGroup[i].Size, GUILayout.Width(40));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Width:", GUILayout.Width(40));
            _spriteAsset.ListSpriteGroup[i].Width = EditorGUILayout.FloatField("", _spriteAsset.ListSpriteGroup[i].Width, GUILayout.Width(40));
            GUILayout.EndHorizontal();

            #region 未展开的sprite组,播放序列帧动画(帧数大于1的序列帧动画才播放)
            if (_showIndex != i && _spriteAsset.ListSpriteGroup[i].ListSpriteInfor.Count > 0)
            {
                if (_playIndexs[i] >= _spriteAsset.ListSpriteGroup[i].ListSpriteInfor.Count)
                {
                    _playIndexs[i] = 0;
                }

                GUI.enabled = false;
                EditorGUILayout.ObjectField("", _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[_playIndexs[i]].Sprite, typeof(Sprite), false);
                GUI.enabled = true;
            }
            #endregion
            GUILayout.EndHorizontal();

            #region 展开的sprite组,显示所有sprite属性
            if (_showIndex == i)
            {
                for (int j = 0; j < _spriteAsset.ListSpriteGroup[i].ListSpriteInfor.Count; j++)
                {
                    GUILayout.BeginHorizontal("sprite" + j, "window");
                    _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Sprite = EditorGUILayout.ObjectField("", _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Sprite, typeof(Sprite), false, GUILayout.Width(80)) as Sprite;

                    GUILayout.FlexibleSpace();

                    GUILayout.BeginVertical();

                    GUI.enabled = false;

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("ID:", GUILayout.Width(50));
                    _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Id = EditorGUILayout.IntField(_spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Id);
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Name:", GUILayout.Width(50));
                    _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Name = EditorGUILayout.TextField(_spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Name);
                    GUILayout.EndHorizontal();

                    GUI.enabled = true;

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Tag:", GUILayout.Width(50));
                    if (GUILayout.Button(_spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Tag, "MiniPopup"))
                    {
                        GenericMenu gm = new GenericMenu();
                        for (int n = 0; n < _tags.Count; n++)
                        {
                            int i2 = i;
                            int j2 = j;
                            int n2 = n;
                            gm.AddItem(new GUIContent(_tags[n2]), false,
                                       delegate()
                            {
                                ChangeTag(_tags[n2], _spriteAsset.ListSpriteGroup[i2].ListSpriteInfor[j2]);
                            });
                        }
                        gm.ShowAsContext();
                    }
                    GUILayout.EndHorizontal();

                    GUI.enabled = false;

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Pivot:", GUILayout.Width(50));
                    EditorGUILayout.Vector2Field("", _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Pivot);
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Rect:", GUILayout.Width(50));
                    EditorGUILayout.RectField("", _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Rect);
                    GUILayout.EndHorizontal();

                    for (int m = 0; m < _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Uv.Length; m++)
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("UV" + m + ":", GUILayout.Width(50));
                        EditorGUILayout.Vector2Field("", _spriteAsset.ListSpriteGroup[i].ListSpriteInfor[j].Uv[m]);
                        GUILayout.EndHorizontal();
                    }

                    GUI.enabled = true;

                    GUILayout.EndVertical();

                    GUILayout.EndHorizontal();
                }
            }
            #endregion
        }

        GUILayout.EndScrollView();
        //unity
        EditorUtility.SetDirty(_spriteAsset);
    }
示例#16
0
    private string GetOutputText()
    {
        _SpriteInfo = new Dictionary <int, SpriteTagInfo>();
        StringBuilder _textBuilder = new StringBuilder();
        int           _textIndex   = 0;

        foreach (Match match in _InputTagRegex.Matches(text))
        {
            int _tempID = 0;
            if (!string.IsNullOrEmpty(match.Groups[1].Value))
            {
                _tempID = int.Parse(match.Groups[1].Value);
            }
            string _tempTag = match.Groups[2].Value;
            //更新超链接
            if (_tempID == -1)
            {
                _textBuilder.Append(text.Substring(_textIndex, match.Index - _textIndex));
                _textBuilder.Append("<color=blue>");
                int _startIndex = _textBuilder.Length * 4;
                _textBuilder.Append("[" + match.Groups[2].Value + "]");
                int _endIndex = _textBuilder.Length * 4 - 2;
                _textBuilder.Append("</color>");

                var hrefInfo = new HrefInfo
                {
                    startIndex = _startIndex, // 超链接里的文本起始顶点索引
                    endIndex   = _endIndex,
                    name       = match.Groups[2].Value
                };
                _ListHrefInfos.Add(hrefInfo);
            }
            //更新表情
            else
            {
                if (!_InlineManager._IndexSpriteInfo.ContainsKey(_tempID) ||
                    !_InlineManager._IndexSpriteInfo[_tempID].ContainsKey(_tempTag))
                {
                    continue;
                }
                SpriteInforGroup _tempGroup = _InlineManager._IndexSpriteInfo[_tempID][_tempTag];

                _textBuilder.Append(text.Substring(_textIndex, match.Index - _textIndex));
                int _tempIndex = _textBuilder.Length * 4;
                _textBuilder.Append(@"<quad size=" + _tempGroup.size + " width=" + _tempGroup.width + " />");

                SpriteTagInfo _tempSpriteTag = new SpriteTagInfo
                {
                    _ID   = _tempID,
                    _Tag  = _tempTag,
                    _Size = new Vector2(_tempGroup.size * _tempGroup.width, _tempGroup.size),
                    _Pos  = new Vector3[4],
                    _UV   = _tempGroup.listSpriteInfor[0].uv
                };
                if (!_SpriteInfo.ContainsKey(_tempIndex))
                {
                    _SpriteInfo.Add(_tempIndex, _tempSpriteTag);
                }
            }

            _textIndex = match.Index + match.Length;
        }

        _textBuilder.Append(text.Substring(_textIndex, text.Length - _textIndex));
        return(_textBuilder.ToString());
    }
    public static List <SpriteInforGroup> GetAssetSpriteInfor(Texture2D tex, bool isstatic = true)
    {
        if (isstatic == false)
        {
            taglist.Clear();
        }
        List <SpriteInforGroup> _listGroup = new List <SpriteInforGroup>();
        string filePath = UnityEditor.AssetDatabase.GetAssetPath(tex);

        Object[] objects = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(filePath);

        List <SpriteInfor> _tempSprite = new List <SpriteInfor>();

        Vector2 _texSize = new Vector2(tex.width, tex.height);

        for (int i = 0; i < objects.Length; i++)
        {
            if (objects[i].GetType() != typeof(Sprite))
            {
                continue;
            }
            SpriteInfor temp     = new SpriteInfor();
            Sprite      sprite   = objects[i] as Sprite;
            string      nametemp = sprite.name.Split('_')[0];
            if (isstatic == false)
            {
                /* if (taglist.Contains(nametemp))
                 *   continue;
                 * taglist.Add(nametemp);*/
                temp.tag = nametemp;//prite.name;
            }
            else
            {
                temp.tag = sprite.name;
            }
            temp.ID     = i;
            temp.name   = sprite.name;
            temp.pivot  = sprite.pivot;
            temp.rect   = sprite.rect;
            temp.sprite = sprite;

            temp.uv = GetSpriteUV(_texSize, sprite.rect);
            _tempSprite.Add(temp);
        }

        for (int i = 0; i < _tempSprite.Count; i++)
        {
            SpriteInforGroup _tempGroup = new SpriteInforGroup();
            _tempGroup.tag = _tempSprite[i].tag;
            //_tempGroup.size = 24.0f;
            //_tempGroup.width = 1.0f;
            _tempGroup.listSpriteInfor = new List <SpriteInfor>();
            _tempGroup.listSpriteInfor.Add(_tempSprite[i]);
            for (int j = i + 1; j < _tempSprite.Count; j++)
            {
                if (_tempGroup.tag == _tempSprite[j].tag)
                {
                    _tempGroup.listSpriteInfor.Add(_tempSprite[j]);
                    _tempSprite.RemoveAt(j);
                    j--;
                }
            }
            _listGroup.Add(_tempGroup);
            _tempSprite.RemoveAt(i);
            i--;
        }

        return(_listGroup);
    }