其他分享
首页 > 其他分享> > 扩展方法

扩展方法

作者:互联网

通过扩展方法可以向类型添加功能,而不必创建DriveType或更改原始类型,他们非常适用于需要向类添加功能,但不能编辑类的情况。考虑一下Unity的内置,Transform类,我们无法访问他的源代码。假设我们想要使用函数轻松重置,Transform的位置,旋转和缩放。这个函数的理想位置是放在Transform类中,但由于不能直接向这个类进行添加,并且将这个函数添加到派生类,也没有任何意义。所以我们将为其创建扩展,扩展方法必须放在非泛型静态类中,常见做法是专门创建一个类来包含他们。扩展方法的用法与实例方法类似,他们也声明静态方法。要使函数成为扩展方法,而非静态方法,需要在参数中使用this关键字。在我们的示例中,将创建一个静态类

using UnityEngine;
using System.Collections;

//创建一个包含所有扩展方法的类
//是很常见的做法。此类必须是静态类。
public static class ExtensionMethods
{
    //扩展方法即使像普通方法一样使用,
    //也必须声明为静态。请注意,第一个
    //参数具有“this”关键字,后跟一个 Transform
    //变量。此变量表示扩展方法会成为
    //哪个类的一部分。
    public static void ResetTransformation(this Transform trans)
    {
        trans.position = Vector3.zero;
        trans.localRotation = Quaternion.identity;
        trans.localScale = new Vector3(1, 1, 1);
    }
}
using UnityEngine;
using System.Collections;

public class SomeClass : MonoBehaviour 
{
    void Start () {
        //请注意,即使方法声明中
        //有一个参数,也不会将任何参数传递给
        //此扩展方法。调用此方法的
        //Transform 对象会自动作为
        //第一个参数传入。
        transform.ResetTransformation();
    }
}

 

标签:扩展,Transform,using,trans,方法,public
来源: https://www.cnblogs.com/lsj89/p/15988152.html