ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

扩展方法

2022-03-10 10:05:20  阅读:163  来源: 互联网

标签:扩展 Transform using trans 方法 public


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有