拷贝场景物体的路径、名称及其父物体的路径

//拷贝场景物体的路径,其父物体的路径,其名称
//方便Find到物体

    public class CopyPath
    {
        [MenuItem("Tool/CopyPath/CopyFullPath", false, 0)]
        static void InitFullPath()
        {
            if (Selection.gameObjects != null && Selection.gameObjects.Length == 1)
            {
                string pathStr = string.Empty;
                GetPath(Selection.gameObjects[0].transform, ref pathStr);

                TextEditor te = new TextEditor();
                te.text = pathStr;
                //te.content = new GUIContent(pathStr);
                te.SelectAll();
                te.Copy();
                ClearConsole();
            }
            else
            {

                Debug.LogError("请只选择一个物体进行复制路径;");
            }
        }
        [MenuItem("Tool/CopyPath/CopyParentPath", false, 0)]
        static void InitParent()
        {
            if (Selection.gameObjects != null && Selection.gameObjects.Length == 1)
            {
                TextEditor te = new TextEditor();
                if (Selection.gameObjects[0].transform.parent == null)
                {
                    Debug.LogError("无父物体;");
                }
                else
                {
                    string pathStr = string.Empty;
                    GetPath(Selection.gameObjects[0].transform.parent, ref pathStr);
                    te.text = pathStr;
                    te.SelectAll();
                    te.Copy();
                    ClearConsole();
                }
            }
            else
            {

                Debug.LogError("请只选择一个物体进行复制路径;");
            }
        }
        [MenuItem("Tool/CopyPath/CopyName", false, 0)]
        static void InitName()
        {
            if (Selection.gameObjects != null && Selection.gameObjects.Length == 1)
            {
                string pathStr = Selection.gameObjects[0].name;
                TextEditor te = new TextEditor();
                te.text = pathStr;
                te.SelectAll();
                te.Copy();
                ClearConsole();
            }
            else
            {
                Debug.ClearDeveloperConsole();
                Debug.LogError("请只选择一个物体进行复制路径;");
            }
        }
        static string GetPath(Transform tr, ref string str)
        {
            if (tr != null)
            {
                str = tr.name + str;
                tr = tr.parent;
                if (tr != null)
                {
                    str = "/" + str;
                }
                GetPath(tr, ref str);
            }
            else
            {
                return str;
            }
            return str;
        }
        public static void ClearConsole()
        {
            var logEntries = System.Type.GetType("UnityEditorInternal.LogEntries,UnityEditor.dll");
            var clearMethod = logEntries.GetMethod("Clear", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
            clearMethod.Invoke(null, null);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值