一.应用背景:
在Unity开发过程中,有些时候我们需要获取从根节点到指定节点的路径,这里针对节点Transform进行扩展,返回由指定分隔符分割的完整路径:
二.核心源码:
基本思想:循环寻找父节点,并记录当前节点,直到父节点为空时,即到达根节点。
using UnityEngine;
public static class TransformExtension
{
public static string GetRoute(this Transform transform, string splitter = ".")
{
var result = transform.name;
var parent = transform.parent;
while (parent != null)
{
result = $"{parent.name}{splitter}{result}";
parent = parent.parent;
}
return result;
}
}
三.测试结果:
针对上述扩展方法进行测试,测试源码如下:
using UnityEngine;
using UnityEditor;
public class Test : MonoBehaviour
{
[MenuItem("GameObject/GetRout",priority =0)]
static void GetRout()
{
var transform = Selection.activeTransform;
var route = transform.GetRoute();
Debug.Log(route);
}
}
结果如下图: