From a10eea6e4ce647061813519d5b0ea496f29495b9 Mon Sep 17 00:00:00 2001
From: leonard Wu <364452445@qq.com>
Date: 星期四, 09 八月 2018 09:47:08 +0800
Subject: [PATCH] 同步最新svn内容

---
 Assets/Editor/Tool/FormatPrefabTool.cs | 1062 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 531 insertions(+), 531 deletions(-)

diff --git a/Assets/Editor/Tool/FormatPrefabTool.cs b/Assets/Editor/Tool/FormatPrefabTool.cs
index d3c6103..5911f5f 100644
--- a/Assets/Editor/Tool/FormatPrefabTool.cs
+++ b/Assets/Editor/Tool/FormatPrefabTool.cs
@@ -1,531 +1,531 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEditor;
-using UnityEngine.UI;
-using System.IO;
-using Snxxz.UI;
-using System;
-
-public static class FormatPrefabTool
-{
-    enum FormatPrefabType
-    {
-        ItemCell,
-        FunctionButton,
-    }
-
-    [SerializeField] static FormatPrefabType s_FormatPrefabType = FormatPrefabType.ItemCell;
-
-    static Vector2 s_ScrollPosition = Vector2.zero;
-
-    public static void OnGUI()
-    {
-        ToolsHelper.DisplayFolderPath();
-        s_FormatPrefabType = (FormatPrefabType)EditorGUILayout.EnumPopup(s_FormatPrefabType, GUILayout.Width(100));
-
-        switch (s_FormatPrefabType)
-        {
-            case FormatPrefabType.ItemCell:
-                DisplayItemCell();
-                break;
-            case FormatPrefabType.FunctionButton:
-                DisplayFuncButton();
-                break;
-        }
-    }
-
-    #region ItemCell
-    public enum ItemCellComType
-    {
-        None,
-        ItemBG,
-        ItemIcon,
-        Lock,
-        Count,
-        State,
-        Star,
-        Reduce,
-    }
-
-    public class ItemCellCom
-    {
-        public ItemCellComType type;
-        public RectTransform transform;
-        public Image image;
-        public Text text;
-        public List<Image> stars = new List<Image>();
-
-        public ItemCellCom(ItemCellComType _type, RectTransform _trans)
-        {
-            type = _type;
-            transform = _trans;
-            switch (type)
-            {
-                case ItemCellComType.Reduce:
-                case ItemCellComType.Lock:
-                case ItemCellComType.ItemIcon:
-                case ItemCellComType.ItemBG:
-                case ItemCellComType.State:
-                    image = _trans.GetComponent<Image>();
-                    break;
-                case ItemCellComType.Count:
-                    text = _trans.GetComponent<Text>();
-                    break;
-                case ItemCellComType.Star:
-                    foreach (RectTransform _rect in _trans)
-                    {
-                        stars.Add(_rect.GetComponent<Image>());
-                    }
-                    break;
-            }
-        }
-    }
-
-    public class FormatItemCell
-    {
-        public int Size = 84;
-        public GameObject template;
-        public List<ItemCellCom> ItemCellComs = new List<ItemCellCom>();
-        public List<RectTransform> ItemTrans = new List<RectTransform>();
-        public List<ItemCellComType> ItemComTypes = new List<ItemCellComType>();
-    }
-
-    static List<FormatItemCell> formatItems = new List<FormatItemCell>();
-    static void DisplayItemCell()
-    {
-        GUILayout.BeginHorizontal();
-        if (GUILayout.Button("娣诲姞妯℃澘Item"))
-        {
-            formatItems.Add(new FormatItemCell());
-        }
-        GUILayout.FlexibleSpace();
-        GUILayout.EndHorizontal();
-
-        s_ScrollPosition = GUILayout.BeginScrollView(s_ScrollPosition, GUILayout.Height(300));
-        for (int i = 0; i < formatItems.Count; i++)
-        {
-            var _formatItem = formatItems[i];
-            GUILayout.BeginHorizontal();
-            var _object = EditorGUILayout.ObjectField(_formatItem.template, typeof(GameObject), false) as GameObject;
-            if (_object != _formatItem.template)
-            {
-                _formatItem.ItemCellComs.Clear();
-                _formatItem.template = _object;
-                _formatItem.ItemTrans.Clear();
-                _formatItem.ItemComTypes.Clear();
-                if (_formatItem.template != null)
-                {
-                    FindChild(_formatItem, _formatItem.template.transform);
-                }
-            }
-            GUILayout.Label("Item Size锛�");
-            _formatItem.Size = EditorGUILayout.IntField(_formatItem.Size);
-            if (GUILayout.Button("-"))
-            {
-                formatItems.RemoveAt(i);
-                i--;
-                continue;
-            }
-            GUILayout.FlexibleSpace();
-            GUILayout.EndHorizontal();
-
-            for (int k = 0; k < _formatItem.ItemTrans.Count; k++)
-            {
-                GUILayout.BeginHorizontal();
-                EditorGUILayout.ObjectField(_formatItem.ItemTrans[k], typeof(RectTransform), false);
-                var _type = (ItemCellComType)EditorGUILayout.EnumPopup(_formatItem.ItemComTypes[k]);
-                if (_type != _formatItem.ItemComTypes[k])
-                {
-                    _formatItem.ItemCellComs.RemoveAll((x) =>
-                    {
-                        return x.type == _formatItem.ItemComTypes[k];
-                    });
-                    var _item = _formatItem.ItemCellComs.Find((x) =>
-                    {
-                        return x.type == _type;
-                    });
-                    if (_item == null)
-                    {
-                        _formatItem.ItemComTypes[k] = _type;
-                        _item = new ItemCellCom(_type, _formatItem.ItemTrans[k]);
-                        _formatItem.ItemCellComs.Add(_item);
-                    }
-                    else
-                    {
-                        _formatItem.ItemComTypes[k] = ItemCellComType.None;
-                    }
-                }
-                GUILayout.FlexibleSpace();
-                GUILayout.EndHorizontal();
-            }
-            GUILayout.Space(10);
-        }
-        GUILayout.EndScrollView();
-
-
-
-        if (GUILayout.Button("寮�濮嬫浛鎹�"))
-        {
-            if (ToolsHelper.folderPath != string.Empty && formatItems.Count > 0)
-            {
-                StartFormatPrefab();
-            }
-        }
-    }
-
-    static void FindChild(FormatItemCell _format, Transform _parent)
-    {
-        foreach (RectTransform _tran in _parent)
-        {
-            _format.ItemTrans.Add(_tran);
-            _format.ItemComTypes.Add(ItemCellComType.None);
-            FindChild(_format, _tran);
-        }
-    }
-
-    static void StartFormatPrefab()
-    {
-        var _files = Directory.GetFiles(ToolsHelper.folderPath, "*.prefab", SearchOption.AllDirectories);
-        if (_files == null || _files.Length == 0)
-        {
-            return;
-        }
-        var _index = 0;
-        EditorApplication.update = delegate ()
-        {
-            var _file = _files[_index];
-            GameObject _prefab = AssetDatabase.LoadAssetAtPath(ToolsHelper.GetRelativeAssetsPath(_file), typeof(GameObject)) as GameObject;
-            if (_prefab != null)
-            {
-                bool _change = false;
-                var _itemCells = _prefab.GetComponentsInChildren<ItemCell>(true);
-                if (_itemCells != null && _itemCells.Length > 0)
-                {
-                    Replace(_itemCells);
-                    _change = true;
-                }
-                var _itemBases = _prefab.GetComponentsInChildren<CommonItemBaisc>(true);
-                if (_itemBases != null && _itemBases.Length > 0)
-                {
-                    Replace(_itemBases);
-                    _change = true;
-                }
-                var _itemBehaviours = _prefab.GetComponentsInChildren<ItemBehaviour>(true);
-                if (_itemBases != null && _itemBases.Length > 0)
-                {
-                    Replace(_itemBehaviours);
-                    _change = true;
-                }
-                if (_change)
-                {
-                    EditorUtility.SetDirty(_prefab);
-                }
-            }
-            bool _isCancel = EditorUtility.DisplayCancelableProgressBar("鏇挎崲棰勫埗浣揑tem",
-                StringUtility.Contact(_index, "/", _files.Length), (float)_index / _files.Length);
-            _index++;
-            if (_isCancel || _index >= _files.Length)
-            {
-                EditorUtility.ClearProgressBar();
-                EditorApplication.update = null;
-                AssetDatabase.SaveAssets();
-                AssetDatabase.Refresh();
-                _index = 0;
-            }
-        };
-    }
-
-    static void Replace<T>(T[] _items) where T : MonoBehaviour
-    {
-        if (typeof(T) == typeof(ItemCell) || typeof(T) == typeof(CommonItemBaisc))
-        {
-            CommonItemBaisc[] _itemCells = _items as CommonItemBaisc[];
-            for (int i = 0; i < _itemCells.Length; i++)
-            {
-                var _item = _itemCells[i];
-                FormatItemCell _formatItem = null;
-                if (_item.bgIcon != null)
-                {
-                    int _size = (int)_item.bgIcon.rectTransform.sizeDelta.x;
-                    _formatItem = formatItems.Find((x) =>
-                    {
-                        return x.Size == _size;
-                    });
-                }
-                if (null == _formatItem)
-                {
-                    continue;
-                }
-                foreach (var _source in _formatItem.ItemCellComs)
-                {
-                    switch (_source.type)
-                    {
-                        case ItemCellComType.ItemBG:
-                            if (_item.bgIcon != null)
-                            {
-                                PasteImage(_item.bgIcon, _source.image);
-                            }
-                            break;
-                        case ItemCellComType.ItemIcon:
-                            if (_item.itemIcon != null)
-                            {
-                                PasteImage(_item.itemIcon, _source.image);
-                            }
-                            break;
-                        case ItemCellComType.State:
-                            if (_item.stateIcon != null)
-                            {
-                                PasteImage(_item.stateIcon, _source.image);
-                            }
-                            break;
-                        case ItemCellComType.Star:
-                            if (_item.starlist != null)
-                            {
-                                PasteRectTransform(_item.starlist.transform as RectTransform, _source.transform);
-                                int _index = 0;
-                                foreach (RectTransform _rect in _item.starlist.transform)
-                                {
-                                    if (_index >= _source.stars.Count)
-                                    {
-                                        break;
-                                    }
-                                    PasteImage(_rect.GetComponent<Image>(), _source.stars[_index]);
-                                    _index++;
-                                }
-                            }
-                            break;
-                        case ItemCellComType.Lock:
-                            if (_item.bindIcon != null)
-                            {
-                                PasteImage(_item.bindIcon, _source.image);
-                            }
-                            break;
-                        case ItemCellComType.Reduce:
-                            if (_item is ItemCell)
-                            {
-                                var _itemCell = _item as ItemCell;
-                                if (_itemCell.reducebtn != null)
-                                {
-                                    PasteImage(_itemCell.reducebtn.image, _source.image);
-                                }
-                            }
-                            break;
-                        case ItemCellComType.Count:
-                            if (_item.countText != null)
-                            {
-                                PasteText(_item.countText, _source.text);
-                            }
-                            break;
-                    }
-                }
-            }
-        }
-        else if (typeof(T) == typeof(ItemBehaviour))
-        {
-            ItemBehaviour[] _itemCells = _items as ItemBehaviour[];
-            for (int i = 0; i < _itemCells.Length; i++)
-            {
-                var _item = _itemCells[i];
-                FormatItemCell _formatItem = null;
-                if (_item.backGround != null)
-                {
-                    int _size = (int)_item.backGround.rectTransform.sizeDelta.x;
-                    _formatItem = formatItems.Find((x) =>
-                    {
-                        return x.Size == _size;
-                    });
-                }
-                if (null == _formatItem)
-                {
-                    continue;
-                }
-                foreach (var _source in _formatItem.ItemCellComs)
-                {
-                    switch (_source.type)
-                    {
-                        case ItemCellComType.ItemBG:
-                            if (_item.backGround != null)
-                            {
-                                PasteImage(_item.backGround, _source.image);
-                            }
-                            break;
-                        case ItemCellComType.ItemIcon:
-                            if (_item.icon != null)
-                            {
-                                PasteImage(_item.icon, _source.image);
-                            }
-                            break;
-                        case ItemCellComType.Star:
-                            if (_item.stars != null && _item.stars.Length > 0)
-                            {
-                                PasteRectTransform(_item.stars[0].transform.parent as RectTransform, _source.transform);
-                                for (int k = 0; k < _item.stars.Length; k++)
-                                {
-                                    if (k >= _source.stars.Count)
-                                    {
-                                        break;
-                                    }
-                                    PasteImage(_item.stars[k], _source.stars[k]);
-                                }
-                            }
-                            break;
-                        case ItemCellComType.Count:
-                            if (_item.count != null)
-                            {
-                                PasteText(_item.count, _source.text);
-                            }
-                            break;
-                    }
-                }
-            }
-        }
-    }
-
-    static void PasteImage(Image _target, Image _paste)
-    {
-        _target.sprite = _paste.sprite;
-        _target.color = _paste.color;
-        _target.raycastTarget = _paste.raycastTarget;
-        PasteRectTransform(_target.rectTransform, _paste.rectTransform);
-    }
-
-    static void PasteText(Text _target, Text _paste)
-    {
-        _target.color = _paste.color;
-        _target.fontSize = _paste.fontSize;
-        _target.font = _paste.font;
-        _target.raycastTarget = _paste.raycastTarget;
-        _target.alignment = _paste.alignment;
-        _target.horizontalOverflow = _paste.horizontalOverflow;
-        _target.verticalOverflow = _paste.verticalOverflow;
-        PasteRectTransform(_target.rectTransform, _paste.rectTransform);
-    }
-
-    static void PasteRectTransform(RectTransform _target, RectTransform _paste)
-    {
-        _target.pivot = _paste.pivot;
-        _target.anchorMax = _paste.anchorMax;
-        _target.anchorMin = _paste.anchorMin;
-        _target.sizeDelta = _paste.sizeDelta;
-        _target.anchoredPosition = _paste.anchoredPosition;
-    }
-    #endregion
-
-    #region FunctionButton
-    static Sprite m_FuncButtonLockIcon;
-    private static void DisplayFuncButton()
-    {
-        GUILayout.BeginHorizontal();
-        GUILayout.Label("鏇挎崲閿両con:");
-        m_FuncButtonLockIcon = EditorGUILayout.ObjectField(m_FuncButtonLockIcon, typeof(Sprite), false) as Sprite;
-        GUILayout.FlexibleSpace();
-        GUILayout.EndHorizontal();
-        if (GUILayout.Button("寮�濮嬫浛鎹�"))
-        {
-            if (ToolsHelper.folderPath != string.Empty)
-            {
-                StartFormatFuncButton();
-            }
-        }
-    }
-
-    private static void StartFormatFuncButton()
-    {
-        var _files = Directory.GetFiles(ToolsHelper.folderPath, "*.prefab", SearchOption.AllDirectories);
-        if (_files == null || _files.Length == 0)
-        {
-            return;
-        }
-        var _index = 0;
-        EditorApplication.update = delegate ()
-        {
-            var _file = _files[_index];
-            GameObject _prefab = AssetDatabase.LoadAssetAtPath(ToolsHelper.GetRelativeAssetsPath(_file), typeof(GameObject)) as GameObject;
-            if (_prefab != null)
-            {
-                try
-                {
-                    var _copy = PrefabUtility.InstantiatePrefab(_prefab) as GameObject;
-                    if (_copy != null)
-                    {
-                        bool _change = false;
-                        var _funcbuttons = _copy.GetComponentsInChildren<FunctionButton>(true);
-                        if (_funcbuttons != null && _funcbuttons.Length > 0)
-                        {
-                            for (int i = 0; i < _funcbuttons.Length; i++)
-                            {
-                                var _funcButton = _funcbuttons[i];
-                                if (_funcButton.alternativeConfig.name == "FunctionButton_Version4")
-                                {
-                                    GameObject _obj = null;
-                                    if (_funcButton.transform.Find("Container_SortArea") == null)
-                                    {
-                                        _obj = new GameObject("Container_SortArea");
-                                    }
-                                    else
-                                    {
-                                        _obj = _funcButton.transform.Find("Container_SortArea").gameObject;
-                                    }
-                                    var _layout = _obj.AddMissingComponent<HorizontalLayoutGroup>();
-                                    _layout.childAlignment = TextAnchor.MiddleCenter;
-                                    _layout.childControlWidth = true;
-                                    _layout.childControlHeight = false;
-                                    _layout.childForceExpandHeight = false;
-                                    _layout.childForceExpandWidth = false;
-                                    _obj.transform.SetParent(_funcButton.transform);
-                                    var _rect = _obj.transform as RectTransform;
-                                    _rect.localScale = Vector3.one;
-                                    _rect.anchorMin = Vector2.zero;
-                                    _rect.anchorMax = Vector2.one;
-                                    _rect.offsetMax = Vector2.zero;
-                                    _rect.offsetMin = Vector2.zero;
-                                    _rect.pivot = Vector2.one / 2;
-                                    if (_funcButton.locked != null)
-                                    {
-                                        _funcButton.locked.SetParent(_rect);
-                                        var _image = _funcButton.locked.GetComponent<Image>();
-                                        if (_image != null && m_FuncButtonLockIcon != null)
-                                        {
-                                            _image.sprite = m_FuncButtonLockIcon;
-                                            _image.SetNativeSize();
-                                        }
-                                    }
-                                    if (_funcButton.title != null)
-                                    {
-                                        _funcButton.title.transform.SetParent(_rect);
-                                        _funcButton.title.rectTransform.sizeDelta = (_funcButton.transform as RectTransform).sizeDelta;
-                                    }
-                                    _change = true;
-                                }
-                            }
-                        }
-                        if (_change)
-                        {
-                            PrefabUtility.ReplacePrefab(_copy, _prefab, ReplacePrefabOptions.ConnectToPrefab);
-                        }
-                        GameObject.DestroyImmediate(_copy);
-                    }
-                }
-                catch (Exception e)
-                {
-                    Debug.Log(e.Message);
-                }
-                
-            }
-            bool _isCancel = EditorUtility.DisplayCancelableProgressBar("鏇挎崲棰勫埗浣�",
-                StringUtility.Contact(_index, "/", _files.Length), (float)_index / _files.Length);
-            _index++;
-            if (_isCancel || _index >= _files.Length)
-            {
-                EditorUtility.ClearProgressBar();
-                EditorApplication.update = null;
-                AssetDatabase.SaveAssets();
-                AssetDatabase.Refresh();
-                _index = 0;
-            }
-        };
-    }
-    #endregion
-
-}
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using UnityEngine.UI;
+using System.IO;
+using Snxxz.UI;
+using System;
+
+public static class FormatPrefabTool
+{
+    enum FormatPrefabType
+    {
+        ItemCell,
+        FunctionButton,
+    }
+
+    [SerializeField] static FormatPrefabType s_FormatPrefabType = FormatPrefabType.ItemCell;
+
+    static Vector2 s_ScrollPosition = Vector2.zero;
+
+    public static void OnGUI()
+    {
+        ToolsHelper.DisplayFolderPath();
+        s_FormatPrefabType = (FormatPrefabType)EditorGUILayout.EnumPopup(s_FormatPrefabType, GUILayout.Width(100));
+
+        switch (s_FormatPrefabType)
+        {
+            case FormatPrefabType.ItemCell:
+                DisplayItemCell();
+                break;
+            case FormatPrefabType.FunctionButton:
+                DisplayFuncButton();
+                break;
+        }
+    }
+
+    #region ItemCell
+    public enum ItemCellComType
+    {
+        None,
+        ItemBG,
+        ItemIcon,
+        Lock,
+        Count,
+        State,
+        Star,
+        Reduce,
+    }
+
+    public class ItemCellCom
+    {
+        public ItemCellComType type;
+        public RectTransform transform;
+        public Image image;
+        public Text text;
+        public List<Image> stars = new List<Image>();
+
+        public ItemCellCom(ItemCellComType _type, RectTransform _trans)
+        {
+            type = _type;
+            transform = _trans;
+            switch (type)
+            {
+                case ItemCellComType.Reduce:
+                case ItemCellComType.Lock:
+                case ItemCellComType.ItemIcon:
+                case ItemCellComType.ItemBG:
+                case ItemCellComType.State:
+                    image = _trans.GetComponent<Image>();
+                    break;
+                case ItemCellComType.Count:
+                    text = _trans.GetComponent<Text>();
+                    break;
+                case ItemCellComType.Star:
+                    foreach (RectTransform _rect in _trans)
+                    {
+                        stars.Add(_rect.GetComponent<Image>());
+                    }
+                    break;
+            }
+        }
+    }
+
+    public class FormatItemCell
+    {
+        public int Size = 84;
+        public GameObject template;
+        public List<ItemCellCom> ItemCellComs = new List<ItemCellCom>();
+        public List<RectTransform> ItemTrans = new List<RectTransform>();
+        public List<ItemCellComType> ItemComTypes = new List<ItemCellComType>();
+    }
+
+    static List<FormatItemCell> formatItems = new List<FormatItemCell>();
+    static void DisplayItemCell()
+    {
+        GUILayout.BeginHorizontal();
+        if (GUILayout.Button("娣诲姞妯℃澘Item"))
+        {
+            formatItems.Add(new FormatItemCell());
+        }
+        GUILayout.FlexibleSpace();
+        GUILayout.EndHorizontal();
+
+        s_ScrollPosition = GUILayout.BeginScrollView(s_ScrollPosition, GUILayout.Height(300));
+        for (int i = 0; i < formatItems.Count; i++)
+        {
+            var _formatItem = formatItems[i];
+            GUILayout.BeginHorizontal();
+            var _object = EditorGUILayout.ObjectField(_formatItem.template, typeof(GameObject), false) as GameObject;
+            if (_object != _formatItem.template)
+            {
+                _formatItem.ItemCellComs.Clear();
+                _formatItem.template = _object;
+                _formatItem.ItemTrans.Clear();
+                _formatItem.ItemComTypes.Clear();
+                if (_formatItem.template != null)
+                {
+                    FindChild(_formatItem, _formatItem.template.transform);
+                }
+            }
+            GUILayout.Label("Item Size锛�");
+            _formatItem.Size = EditorGUILayout.IntField(_formatItem.Size);
+            if (GUILayout.Button("-"))
+            {
+                formatItems.RemoveAt(i);
+                i--;
+                continue;
+            }
+            GUILayout.FlexibleSpace();
+            GUILayout.EndHorizontal();
+
+            for (int k = 0; k < _formatItem.ItemTrans.Count; k++)
+            {
+                GUILayout.BeginHorizontal();
+                EditorGUILayout.ObjectField(_formatItem.ItemTrans[k], typeof(RectTransform), false);
+                var _type = (ItemCellComType)EditorGUILayout.EnumPopup(_formatItem.ItemComTypes[k]);
+                if (_type != _formatItem.ItemComTypes[k])
+                {
+                    _formatItem.ItemCellComs.RemoveAll((x) =>
+                    {
+                        return x.type == _formatItem.ItemComTypes[k];
+                    });
+                    var _item = _formatItem.ItemCellComs.Find((x) =>
+                    {
+                        return x.type == _type;
+                    });
+                    if (_item == null)
+                    {
+                        _formatItem.ItemComTypes[k] = _type;
+                        _item = new ItemCellCom(_type, _formatItem.ItemTrans[k]);
+                        _formatItem.ItemCellComs.Add(_item);
+                    }
+                    else
+                    {
+                        _formatItem.ItemComTypes[k] = ItemCellComType.None;
+                    }
+                }
+                GUILayout.FlexibleSpace();
+                GUILayout.EndHorizontal();
+            }
+            GUILayout.Space(10);
+        }
+        GUILayout.EndScrollView();
+
+
+
+        if (GUILayout.Button("寮�濮嬫浛鎹�"))
+        {
+            if (ToolsHelper.folderPath != string.Empty && formatItems.Count > 0)
+            {
+                StartFormatPrefab();
+            }
+        }
+    }
+
+    static void FindChild(FormatItemCell _format, Transform _parent)
+    {
+        foreach (RectTransform _tran in _parent)
+        {
+            _format.ItemTrans.Add(_tran);
+            _format.ItemComTypes.Add(ItemCellComType.None);
+            FindChild(_format, _tran);
+        }
+    }
+
+    static void StartFormatPrefab()
+    {
+        var _files = Directory.GetFiles(ToolsHelper.folderPath, "*.prefab", SearchOption.AllDirectories);
+        if (_files == null || _files.Length == 0)
+        {
+            return;
+        }
+        var _index = 0;
+        EditorApplication.update = delegate ()
+        {
+            var _file = _files[_index];
+            GameObject _prefab = AssetDatabase.LoadAssetAtPath(ToolsHelper.GetRelativeAssetsPath(_file), typeof(GameObject)) as GameObject;
+            if (_prefab != null)
+            {
+                bool _change = false;
+                var _itemCells = _prefab.GetComponentsInChildren<ItemCell>(true);
+                if (_itemCells != null && _itemCells.Length > 0)
+                {
+                    Replace(_itemCells);
+                    _change = true;
+                }
+                var _itemBases = _prefab.GetComponentsInChildren<CommonItemBaisc>(true);
+                if (_itemBases != null && _itemBases.Length > 0)
+                {
+                    Replace(_itemBases);
+                    _change = true;
+                }
+                var _itemBehaviours = _prefab.GetComponentsInChildren<ItemBehaviour>(true);
+                if (_itemBases != null && _itemBases.Length > 0)
+                {
+                    Replace(_itemBehaviours);
+                    _change = true;
+                }
+                if (_change)
+                {
+                    EditorUtility.SetDirty(_prefab);
+                }
+            }
+            bool _isCancel = EditorUtility.DisplayCancelableProgressBar("鏇挎崲棰勫埗浣揑tem",
+                StringUtility.Contact(_index, "/", _files.Length), (float)_index / _files.Length);
+            _index++;
+            if (_isCancel || _index >= _files.Length)
+            {
+                EditorUtility.ClearProgressBar();
+                EditorApplication.update = null;
+                AssetDatabase.SaveAssets();
+                AssetDatabase.Refresh();
+                _index = 0;
+            }
+        };
+    }
+
+    static void Replace<T>(T[] _items) where T : MonoBehaviour
+    {
+        if (typeof(T) == typeof(ItemCell) || typeof(T) == typeof(CommonItemBaisc))
+        {
+            CommonItemBaisc[] _itemCells = _items as CommonItemBaisc[];
+            for (int i = 0; i < _itemCells.Length; i++)
+            {
+                var _item = _itemCells[i];
+                FormatItemCell _formatItem = null;
+                if (_item.bgIcon != null)
+                {
+                    int _size = (int)_item.bgIcon.rectTransform.sizeDelta.x;
+                    _formatItem = formatItems.Find((x) =>
+                    {
+                        return x.Size == _size;
+                    });
+                }
+                if (null == _formatItem)
+                {
+                    continue;
+                }
+                foreach (var _source in _formatItem.ItemCellComs)
+                {
+                    switch (_source.type)
+                    {
+                        case ItemCellComType.ItemBG:
+                            if (_item.bgIcon != null)
+                            {
+                                PasteImage(_item.bgIcon, _source.image);
+                            }
+                            break;
+                        case ItemCellComType.ItemIcon:
+                            if (_item.itemIcon != null)
+                            {
+                                PasteImage(_item.itemIcon, _source.image);
+                            }
+                            break;
+                        case ItemCellComType.State:
+                            if (_item.stateIcon != null)
+                            {
+                                PasteImage(_item.stateIcon, _source.image);
+                            }
+                            break;
+                        case ItemCellComType.Star:
+                            if (_item.starlist != null)
+                            {
+                                PasteRectTransform(_item.starlist.transform as RectTransform, _source.transform);
+                                int _index = 0;
+                                foreach (RectTransform _rect in _item.starlist.transform)
+                                {
+                                    if (_index >= _source.stars.Count)
+                                    {
+                                        break;
+                                    }
+                                    PasteImage(_rect.GetComponent<Image>(), _source.stars[_index]);
+                                    _index++;
+                                }
+                            }
+                            break;
+                        case ItemCellComType.Lock:
+                            if (_item.bindIcon != null)
+                            {
+                                PasteImage(_item.bindIcon, _source.image);
+                            }
+                            break;
+                        case ItemCellComType.Reduce:
+                            if (_item is ItemCell)
+                            {
+                                var _itemCell = _item as ItemCell;
+                                if (_itemCell.reducebtn != null)
+                                {
+                                    PasteImage(_itemCell.reducebtn.image, _source.image);
+                                }
+                            }
+                            break;
+                        case ItemCellComType.Count:
+                            if (_item.countText != null)
+                            {
+                                PasteText(_item.countText, _source.text);
+                            }
+                            break;
+                    }
+                }
+            }
+        }
+        else if (typeof(T) == typeof(ItemBehaviour))
+        {
+            ItemBehaviour[] _itemCells = _items as ItemBehaviour[];
+            for (int i = 0; i < _itemCells.Length; i++)
+            {
+                var _item = _itemCells[i];
+                FormatItemCell _formatItem = null;
+                if (_item.backGround != null)
+                {
+                    int _size = (int)_item.backGround.rectTransform.sizeDelta.x;
+                    _formatItem = formatItems.Find((x) =>
+                    {
+                        return x.Size == _size;
+                    });
+                }
+                if (null == _formatItem)
+                {
+                    continue;
+                }
+                foreach (var _source in _formatItem.ItemCellComs)
+                {
+                    switch (_source.type)
+                    {
+                        case ItemCellComType.ItemBG:
+                            if (_item.backGround != null)
+                            {
+                                PasteImage(_item.backGround, _source.image);
+                            }
+                            break;
+                        case ItemCellComType.ItemIcon:
+                            if (_item.icon != null)
+                            {
+                                PasteImage(_item.icon, _source.image);
+                            }
+                            break;
+                        case ItemCellComType.Star:
+                            if (_item.stars != null && _item.stars.Length > 0)
+                            {
+                                PasteRectTransform(_item.stars[0].transform.parent as RectTransform, _source.transform);
+                                for (int k = 0; k < _item.stars.Length; k++)
+                                {
+                                    if (k >= _source.stars.Count)
+                                    {
+                                        break;
+                                    }
+                                    PasteImage(_item.stars[k], _source.stars[k]);
+                                }
+                            }
+                            break;
+                        case ItemCellComType.Count:
+                            if (_item.count != null)
+                            {
+                                PasteText(_item.count, _source.text);
+                            }
+                            break;
+                    }
+                }
+            }
+        }
+    }
+
+    static void PasteImage(Image _target, Image _paste)
+    {
+        _target.sprite = _paste.sprite;
+        _target.color = _paste.color;
+        _target.raycastTarget = _paste.raycastTarget;
+        PasteRectTransform(_target.rectTransform, _paste.rectTransform);
+    }
+
+    static void PasteText(Text _target, Text _paste)
+    {
+        _target.color = _paste.color;
+        _target.fontSize = _paste.fontSize;
+        _target.font = _paste.font;
+        _target.raycastTarget = _paste.raycastTarget;
+        _target.alignment = _paste.alignment;
+        _target.horizontalOverflow = _paste.horizontalOverflow;
+        _target.verticalOverflow = _paste.verticalOverflow;
+        PasteRectTransform(_target.rectTransform, _paste.rectTransform);
+    }
+
+    static void PasteRectTransform(RectTransform _target, RectTransform _paste)
+    {
+        _target.pivot = _paste.pivot;
+        _target.anchorMax = _paste.anchorMax;
+        _target.anchorMin = _paste.anchorMin;
+        _target.sizeDelta = _paste.sizeDelta;
+        _target.anchoredPosition = _paste.anchoredPosition;
+    }
+    #endregion
+
+    #region FunctionButton
+    static Sprite m_FuncButtonLockIcon;
+    private static void DisplayFuncButton()
+    {
+        GUILayout.BeginHorizontal();
+        GUILayout.Label("鏇挎崲閿両con:");
+        m_FuncButtonLockIcon = EditorGUILayout.ObjectField(m_FuncButtonLockIcon, typeof(Sprite), false) as Sprite;
+        GUILayout.FlexibleSpace();
+        GUILayout.EndHorizontal();
+        if (GUILayout.Button("寮�濮嬫浛鎹�"))
+        {
+            if (ToolsHelper.folderPath != string.Empty)
+            {
+                StartFormatFuncButton();
+            }
+        }
+    }
+
+    private static void StartFormatFuncButton()
+    {
+        var _files = Directory.GetFiles(ToolsHelper.folderPath, "*.prefab", SearchOption.AllDirectories);
+        if (_files == null || _files.Length == 0)
+        {
+            return;
+        }
+        var _index = 0;
+        EditorApplication.update = delegate ()
+        {
+            var _file = _files[_index];
+            GameObject _prefab = AssetDatabase.LoadAssetAtPath(ToolsHelper.GetRelativeAssetsPath(_file), typeof(GameObject)) as GameObject;
+            if (_prefab != null)
+            {
+                try
+                {
+                    var _copy = PrefabUtility.InstantiatePrefab(_prefab) as GameObject;
+                    if (_copy != null)
+                    {
+                        bool _change = false;
+                        var _funcbuttons = _copy.GetComponentsInChildren<FunctionButton>(true);
+                        if (_funcbuttons != null && _funcbuttons.Length > 0)
+                        {
+                            for (int i = 0; i < _funcbuttons.Length; i++)
+                            {
+                                var _funcButton = _funcbuttons[i];
+                                if (_funcButton.alternativeConfig.name == "FunctionButton_Version4")
+                                {
+                                    GameObject _obj = null;
+                                    if (_funcButton.transform.Find("Container_SortArea") == null)
+                                    {
+                                        _obj = new GameObject("Container_SortArea");
+                                    }
+                                    else
+                                    {
+                                        _obj = _funcButton.transform.Find("Container_SortArea").gameObject;
+                                    }
+                                    var _layout = _obj.AddMissingComponent<HorizontalLayoutGroup>();
+                                    _layout.childAlignment = TextAnchor.MiddleCenter;
+                                    _layout.childControlWidth = true;
+                                    _layout.childControlHeight = false;
+                                    _layout.childForceExpandHeight = false;
+                                    _layout.childForceExpandWidth = false;
+                                    _obj.transform.SetParent(_funcButton.transform);
+                                    var _rect = _obj.transform as RectTransform;
+                                    _rect.localScale = Vector3.one;
+                                    _rect.anchorMin = Vector2.zero;
+                                    _rect.anchorMax = Vector2.one;
+                                    _rect.offsetMax = Vector2.zero;
+                                    _rect.offsetMin = Vector2.zero;
+                                    _rect.pivot = Vector2.one / 2;
+                                    if (_funcButton.locked != null)
+                                    {
+                                        _funcButton.locked.SetParent(_rect);
+                                        var _image = _funcButton.locked.GetComponent<Image>();
+                                        if (_image != null && m_FuncButtonLockIcon != null)
+                                        {
+                                            _image.sprite = m_FuncButtonLockIcon;
+                                            _image.SetNativeSize();
+                                        }
+                                    }
+                                    if (_funcButton.title != null)
+                                    {
+                                        _funcButton.title.transform.SetParent(_rect);
+                                        _funcButton.title.rectTransform.sizeDelta = (_funcButton.transform as RectTransform).sizeDelta;
+                                    }
+                                    _change = true;
+                                }
+                            }
+                        }
+                        if (_change)
+                        {
+                            PrefabUtility.ReplacePrefab(_copy, _prefab, ReplacePrefabOptions.ConnectToPrefab);
+                        }
+                        GameObject.DestroyImmediate(_copy);
+                    }
+                }
+                catch (Exception e)
+                {
+                    Debug.Log(e.Message);
+                }
+                
+            }
+            bool _isCancel = EditorUtility.DisplayCancelableProgressBar("鏇挎崲棰勫埗浣�",
+                StringUtility.Contact(_index, "/", _files.Length), (float)_index / _files.Length);
+            _index++;
+            if (_isCancel || _index >= _files.Length)
+            {
+                EditorUtility.ClearProgressBar();
+                EditorApplication.update = null;
+                AssetDatabase.SaveAssets();
+                AssetDatabase.Refresh();
+                _index = 0;
+            }
+        };
+    }
+    #endregion
+
+}

--
Gitblit v1.8.0