在我们运用Unity的基础组件编写游戏逻辑的时候,会发现一些我们频繁使用的一些功能Unity却没有提供给我们,而如果让我们为这个功能新扩展一个类,又感觉不划算,如果能直接把我们扩展的功能附加在基础功能中,该多好呀~~~

现实是美好的,在Unity中有这样的功能呢:

using UnityEngine;
 
public static class TransformExtensions {
    public static string GetFullHierarchyPath(this Transform transform) {
        string path = "/" + transform.name;
        while (transform.parent != null)
        {
            transform = transform.parent;
            path = "/" + transform.name + path;
        }
        return path;
    }
}

在这个功能中,我们就给Transform组件扩展了一个获取全局路径的一个功能,在使用时只需像调用普通函数一样调用这个函数:

string path= transform.GetFullHierarchyPath();


如果你的智能提示助手足够智能,就会在你需要的时候显示这个函数,是不是很简单!!!

下面再来一个带参数的示例吧

public static void SetParent(this Transform go, Transform par)
{
    go.parent = par;
    go.localPosition = Vector3.zero;
    go.localEulerAngles = Vector3.zero;
}

下面是使用方法:

effect.transform.SetParent(transform);