编辑器工具--NGUI--图集相关--指定图集,对选中预设中所有使用本图集的图片绑定本图集

来源:互联网 发布:福建软件职业技术学院 编辑:程序博客网 时间:2024/05/17 04:44

Sage_禅

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

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

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

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


项目中用的是NGUI,本篇介绍工具:指定图集,对选中预设中所有使用本图集的图片绑定本图集,代码如下。

using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEditor;/// 我的工具库--NGUI--图集图片相关/// 注:可以用,不可以改/// 所有的相似工具类在此下添加/// <summary>/// 指定图集,对选中预设中所有使用本图集的图片绑定本图集/// </summary>public class WTool_BindAtlas : EditorWindow{    #region 菜单添加    [MenuItem("WTools/Atlas/添加图集(给使用本图集的sp)")]    public static void Open()    {        EditorWindow.GetWindow(typeof(WTool_BindAtlas));    }    #endregion    #region 编辑器渲染绘制    //指定图集    public UIAtlas 指定图集;    private static UIAtlas appointAtla;// 指定图集    private void OnGUI()    {        指定图集 = (UIAtlas)EditorGUILayout.ObjectField(指定图集, typeof(UIAtlas), true, GUILayout.MinWidth(100f));        appointAtla = 指定图集;        if (GUILayout.Button("w图集找找找!"))        {            list = WmxEditorTools.SelectCompount<UISprite>();        }        if (GUILayout.Button("w换换换(一键操作)!"))        {            list = WmxEditorTools.SelectCompount<UISprite>();            Change();        }        if (GUILayout.Button("w修改所有的UI预设图集(一键操作)!"))        {            ChangeAtlas_FromResources(path);        }        /*if (GUILayout.Button("w指定UI预设文件夹修改替换图集(一键操作)!==测试"))        {            ChangeAtlas_FromAssets(testpath);        }*///需要标记修改,再操作--未测试    }     #endregion    //选中预设查找图片记录    public static bool isSelect = true;    public static List<UISprite> list = new List<UISprite>();    public static string path = "UIPrefab";    /// <summary>    /// 绑定图集    /// </summary>    public static void Change()    {        Debug.Log("========预设修改开始==========");        for (int i = 0; i < list.Count; i++)        {            if (list[i] != null)            {                if (appointAtla.GetSprite(list[i].spriteName) != null)                {                    list[i].atlas = appointAtla;                    Debug.Log("-----添加图集的图片为   " + list[i].spriteName + "  集合编号" + i + "   路径:" + AssetDatabase.GetAssetOrScenePath(list[i]));                    continue;                }            }        }        Debug.Log("========预设修改结束==========");    }    /// <summary>    /// Resources下指定路径文件夹内所有预设绑定图集    /// </summary>    /// <param name="path"></param>    public static void ChangeAtlas_FromResources(string path)    {        GameObject[] gos = Resources.LoadAll<GameObject>(path);        for (int i = 0; i < gos.Length; i++)        {            Debug.Log(AssetDatabase.GetAssetOrScenePath(gos[i]));            //标记为预设修改状态,否则预设不会保存            EditorUtility.SetDirty(gos[i]);            list.Clear();            if (gos[i] != null)            {                list.AddRange(gos[i].transform.GetComponentsInChildren<UISprite>(true));                Change();            }        }    }    /// <summary>    /// 未测试通过--根据任意文件夹路径,修改文件夹下所有预设    /// </summary>    /// <param name="path"></param>    public static void ChangeAtlas_FromFile(string path)    {        Object[] gos = Resources.LoadAll(path);        Debug.Log(gos.Length);        for (int i = 0; i < gos.Length; i++)        {            if (gos[i] == null)                continue;            Debug.Log(AssetDatabase.GetAssetOrScenePath(gos[i]));            /*list.Clear();            if (gos[i] != null)            {                list.AddRange(gos[i].transform.GetComponentsInChildren<UISprite>());                Change();            }*/        }    }}


阅读全文
0 0
原创粉丝点击