zoukankan      html  css  js  c++  java
  • 扩展Unity的方法

    写更少代码的需求

    当我们重复写一些繁杂的代码,或C#的一些方法,我们就想能不能有更便捷的方法呢?当然在unity中,我们对它进行扩展。

    对unity的类或C#的类进行扩展有以下两点要注意:

    1、这个类必须声明为static,扩展的方法也必须要声明为static

    2、在使用时,就可以直接调用扩展的方法

    扩展Unity的属性

    Demo

    using UnityEngine;
    using System.Collections;
    
    //It is common to create a class to contain all of your
    //extension methods. This class must be static.
    public static class ExtensionMethods
    {
        //Even though they are used like normal methods, extension
        //methods must be declared static. Notice that the first
        //parameter has the 'this' keyword followed by a Transform
        //variable. This variable denotes which class the extension
        //method becomes a part of.
        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 () {
            //Notice how you pass no parameter into this
            //extension method even though you had one in the
            //method declaration. The transform object that
            //this method is called from automatically gets
            //passed in as the first parameter.
            transform.ResetTransformation();
        }
    }

    扩展C#的方法

    为C#的集合扩展一个方法,当在调用时,就可以直接调用CFirstOrDefault

    public static T CFirstOrDefault<T>(this IEnumerable<T> source)
    {
        if (source != null)
        {
            foreach (T item in source)
            {
                return item;
            }
        }
    
        return default(T);
    }

    文档资料

    文档:http://unity3d.com/learn/tutorials/modules/intermediate/scripting/extension-methods

  • 相关阅读:
    hdu 4135 Co-prime (容斥定理)
    hdu 1509 Windows Message Queue (优先队列)
    poj 2104 K-th Number (划分树)
    hdu 1556 Color the ball (树状数组)
    海量大数据大屏分析展示一步到位:DataWorks数据服务对接DataV最佳实践
    使用MaxCompute Java SDK运行安全相关命令
    使用MaxCompute Java SDK 执行任务卡住了,怎么办?
    老代码多=过度耦合=if else?阿里巴巴工程师这样捋直老代码
    日志服务Python消费组实战(三):实时跨域监测多日志库数据
    如何限制用户仅通过HTTPS方式访问OSS?
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/4629336.html
Copyright © 2011-2022 走看看