//拷贝场景物体的路径,其父物体的路径,其名称
//方便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);
}
}