扩展方法
作者:互联网
通过扩展方法可以向类型添加功能,而不必创建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