@@ -22,6 +22,8 @@ public class SpriteAssetEditor : Editor
2222 private bool _addTag ;
2323 //添加的标签的名称
2424 private string _addTagName ;
25+ //选择
26+ private Dictionary < SpriteInforGroup , bool > _selectSpriteGroup = new Dictionary < SpriteInforGroup , bool > ( ) ;
2527
2628 public void OnEnable ( )
2729 {
@@ -56,7 +58,7 @@ public override void OnInspectorGUI()
5658 _spriteAsset . IsStatic = EditorGUILayout . Toggle ( "Static:" , _spriteAsset . IsStatic ) ;
5759 GUILayout . EndHorizontal ( ) ;
5860 GUILayout . BeginHorizontal ( ) ;
59- if ( GUILayout . Button ( "Add Tag" ) )
61+ if ( GUILayout . Button ( "New Tag" ) )
6062 {
6163 _addTag = ! _addTag ;
6264 }
@@ -91,6 +93,34 @@ public override void OnInspectorGUI()
9193 }
9294 GUILayout . EndHorizontal ( ) ;
9395 }
96+
97+ if ( GUILayout . Button ( "Add Tag" ) )
98+ {
99+ GenericMenu gm = new GenericMenu ( ) ;
100+ for ( int n = 0 ; n < _tags . Count ; n ++ )
101+ {
102+ string newTag = _tags [ n ] ;
103+ gm . AddItem ( new GUIContent ( _tags [ n ] ) , false ,
104+ delegate ( )
105+ {
106+ List < SpriteInforGroup > selectGroup = new List < SpriteInforGroup > ( ) ;
107+ foreach ( var item in _selectSpriteGroup )
108+ {
109+ if ( item . Value )
110+ selectGroup . Add ( item . Key ) ;
111+ }
112+
113+ for ( int j = 0 ; j < selectGroup . Count ; j ++ )
114+ {
115+ for ( int i = 0 ; i < selectGroup [ j ] . ListSpriteInfor . Count ; i ++ )
116+ {
117+ ChangeTag ( newTag , selectGroup [ j ] . ListSpriteInfor [ i ] ) ;
118+ }
119+ }
120+ } ) ;
121+ }
122+ gm . ShowAsContext ( ) ;
123+ }
94124 GUILayout . BeginHorizontal ( ) ;
95125 if ( GUILayout . Button ( "Clear Tag" ) )
96126 {
@@ -111,6 +141,7 @@ public override void OnInspectorGUI()
111141 for ( int i = 0 ; i < _spriteAsset . ListSpriteGroup . Count ; i ++ )
112142 {
113143 GUILayout . BeginHorizontal ( "HelpBox" ) ;
144+ _selectSpriteGroup [ _spriteAsset . ListSpriteGroup [ i ] ] = GUILayout . Toggle ( _selectSpriteGroup [ _spriteAsset . ListSpriteGroup [ i ] ] , "" ) ;
114145 #region 展开与收缩按钮
115146 if ( GUILayout . Button ( _spriteAsset . ListSpriteGroup [ i ] . Tag , _showIndex == i ? "OL Minus" : "OL Plus" ) )
116147 {
@@ -233,10 +264,12 @@ private void Init()
233264 {
234265 _tags = new List < string > ( ) ;
235266 _playIndexs = new List < int > ( ) ;
267+ _selectSpriteGroup . Clear ( ) ;
236268 for ( int i = 0 ; i < _spriteAsset . ListSpriteGroup . Count ; i ++ )
237269 {
238270 _tags . Add ( _spriteAsset . ListSpriteGroup [ i ] . Tag ) ;
239271 _playIndexs . Add ( 0 ) ;
272+ _selectSpriteGroup . Add ( _spriteAsset . ListSpriteGroup [ i ] , false ) ;
240273 }
241274 _playIndex = 0 ;
242275 _showIndex = - 1 ;
0 commit comments