网站公告 | 全新unity3d 完整学习路线,最强课程配套、服务!详情点击
查看: 5473|回复: 9
收起左侧

[旅行的拾荒者] UIPrefab优化

[复制链接]

[旅行的拾荒者] UIPrefab优化[复制链接]

旅行的拾荒者 发表于 2017-9-26 09:33:57 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  9 浏览:  5473
团队多人在开发游戏界面,很多时候都是复制黏贴,RaycastTarget如果被勾选的过多的话, 效率必然会低。我在网上寻找比较好的解决方法的时候发现了雨松的这篇文章。http://www.xuanyusong.com/archives/4291 给所有UI界面绘制辅助线。通过辅助线能较好的修改RaycastTarget。我写了个工具,去批量修改Prefab的RaycastTarget。如果需要可以看看,代码很少。
[C#] 纯文本查看 复制代码
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;

public class GMOptimize : EditorWindow
{
    public static GMOptimize window;
    [MenuItem("Tools/优化")] //在工具栏创建按钮  
    public static void ShowGMWindow()
    {
        if (window == null)
        {
            window = (GMOptimize)GetWindow(typeof(GMOptimize), true, "快捷操作列表");
        }
        window.Show();
    }

    private void OnGUI()
    {
        //if (msg=="")
        //{
        GUILayout.Label("操作列表:", EditorStyles.boldLabel);
        EditorGUILayout.Space();

        if (GUILayout.Button("优化文本"))
        {
            ReviseText();
        }
        if (GUILayout.Button("优化图片"))
        {
            ReviseImg();
        }
        this.Repaint();
    }
    private static void ReviseText()
    {
        if (EditorUtility.DisplayDialog("功能确认",
            "此功能会遍历所有UIPrefab 按钮,并修改Raycast Target为false",
            "确定"))
        {
            string genPath = Application.dataPath + "/Repository/UI/Prefabs/";
            string[] filesPath = System.IO.Directory.GetFiles(genPath, "*.prefab", System.IO.SearchOption.AllDirectories);

            for (int i = 0; i < filesPath.Length; i++)
            {
                filesPath[i] = filesPath[i].Substring(filesPath[i].IndexOf("Assets"));

                GameObject _prefab = AssetDatabase.LoadAssetAtPath(filesPath[i], typeof(GameObject)) as GameObject;
                Text[] meshTxt = _prefab.GetComponentsInChildren<Text>(true);
                foreach (Text txt in meshTxt)
                {
                    txt.raycastTarget = false;
                }

            }
            EditorUtility.DisplayDialog("成功", "修改完毕!", "确定");
        }

    }
    public static void ReviseImg()
    {

        if (EditorUtility.DisplayDialog("功能确认",
            "此功能会遍历所有UIPrefab Image,并修改Raycast Target为false",
            "确定"))
        {
            string genPath = Application.dataPath + "/Repository/UI/Prefabs/";
            string[] filesPath = System.IO.Directory.GetFiles(genPath, "*.prefab", System.IO.SearchOption.AllDirectories);

            for (int i = 0; i < filesPath.Length; i++)
            {
                filesPath[i] = filesPath[i].Substring(filesPath[i].IndexOf("Assets"));

                GameObject _prefab = AssetDatabase.LoadAssetAtPath(filesPath[i], typeof(GameObject)) as GameObject;
                Image[] meshImg = _prefab.GetComponentsInChildren<Image>(true);
                foreach (Image img in meshImg)
                {
                    if (img.gameObject.GetComponent<Toggle>() == null && img.gameObject.GetComponent<Button>())
                    {
                        img.raycastTarget = false;
                    }
                }

            }
            EditorUtility.DisplayDialog("成功", "修改完毕!", "确定");
        }
    }
    

}


UIPrefab优化 | 拾荒者 https://www.noobdev.cn/?p=658

评分

参与人数 2泰斗币 +110 收起 理由
泰课_robin + 10 原创内容
优弧 + 100 原创内容

查看全部评分

+1
5475°C
9
  • 泰课_robin
  • 五月de麦子
  • maxcs2012
  • 无心牙
  • 梦幻星移
过: 他们
因分享而快乐,学习以自强!
泰课_robin 发表于 2017-9-27 15:37:48 显示全部楼层
就喜欢支持原创,给力
因分享而快乐,学习以自强!
五月de麦子 发表于 2017-9-27 16:06:18 显示全部楼层
收藏了,慢慢学习
因分享而快乐,学习以自强!
maxcs2012 发表于 2017-9-27 16:34:47 显示全部楼层
还不是很明白,留了学习下
因分享而快乐,学习以自强!
无心牙 发表于 2017-9-28 15:30:47 显示全部楼层
原创给力666
因分享而快乐,学习以自强!
梦幻星移 发表于 2017-9-29 14:26:46 显示全部楼层
很有帮助多谢
因分享而快乐,学习以自强!
只爱脆夹心 发表于 2017-10-2 04:08:16 显示全部楼层
给力,我来学习了
因分享而快乐,学习以自强!
只爱脆夹心 发表于 2017-10-4 17:49:45 显示全部楼层
学习下,谢谢LZ分享
因分享而快乐,学习以自强!
星陨尘心_clw 发表于 2017-11-27 09:03:17 显示全部楼层
学习下,谢谢LZ分享
因分享而快乐,学习以自强!
kingtopchina 发表于 2018-8-15 10:43:38 显示全部楼层
很不错,收下了!
因分享而快乐,学习以自强!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 浙ICP 备 13006852号-15 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.4

1
QQ