天天看点

编辑器工具--NGUI--图集相关--用新的图集替换旧的图集

Sage_禅

qq交流群:106864335

加群连接:<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=7701e50a9c5f4ce04348cc37f8ff732615c0b6435ad7ef32c15ead9315561a09" target="_blank" rel="external nofollow" ><img src="//pub.idqqimg.com/wpa/images/group.png" alt="Unity-不疯魔,不成活" title="Unity-不疯魔,不成活"></a>

q群初建,欢迎大家加入交流。

微信公众号:zhimeng-1314   名称:Unity不疯魔不成活

开发mmoarpg项目很长时间了,现在总结一些项目中自写的一些工具作为记录和分享。

编辑器工具--NGUI--图集相关--用新的图集替换旧的图集

项目中用的是NGUI,本篇介绍工具:用新的图集替换旧的图集,代码如下。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;

/// 我的工具库--NGUI--图集图片相关
/// 注:可以用,不可以改
/// 所有的相似工具类在此下添加

/// <summary>
/// 用新的图集替换旧的图集
/// </summary>
public class WTool_ChangeAtla : EditorWindow
{
    #region 菜单添加
    [MenuItem("WTools/Atlas/换图集")]
    public static void Open()
    {
        EditorWindow.GetWindow(typeof(WTool_ChangeAtla));
    }
    #endregion


    #region 编辑器渲染绘制
    public UIAtlas 原图集;
    public UIAtlas 新图集;
    private static UIAtlas oldAtla;
    private static UIAtlas toChangeAtla;


    private void OnGUI()
    {
        原图集 = (UIAtlas)EditorGUILayout.ObjectField(原图集, typeof(UIAtlas), true, GUILayout.MinWidth(100f));
        新图集 = (UIAtlas)EditorGUILayout.ObjectField(新图集, typeof(UIAtlas), true, GUILayout.MinWidth(100f));
        toChangeAtla = 新图集;
        oldAtla = 原图集;
        if (GUILayout.Button("wmx变变变!"))
        {
            Change();
        }
    }
    #endregion


    #region 内部逻辑
    public static void Change()
    {
        int num = 0;
        Object[] sprites = Selection.GetFiltered(typeof(UISprite), SelectionMode.Deep);
        foreach (Object item in sprites)
        {
            UISprite sprite = (UISprite)item;
            if (sprite.atlas == oldAtla)
            {
                sprite.atlas = toChangeAtla;
                Debug.Log(item.name + ":" + sprite.name);
                num++;
            }
        }
        Debug.Log("修改完成,共修改的次数为" + num);
    } 
    #endregion
}