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