拡張メソッド

確認済のバージョン: 4.1

-

難易度: 中級

拡張 (extension) メソッドの作成、実装、呼び出しを学びます。

拡張メソッド

中級 Scripting

ExtensionMethods

Code snippet

using UnityEngine;
using System.Collections;

//すべての拡張メソッドを含むクラスを作成するのが一般的です
//このクラスは static でなくてはなりません
public static class ExtensionMethods
{
         //一般的なメソッドのように使用されますが、
         //拡張メソッドは static と宣言する必要があります。
         //最初のパラメーターにはキーワード 'this' があり、
         //次に Transform の変数が続きます。この変数は
         //拡張がどのクラスの一部になるかということを示しています。
    public static void ResetTransformation(this Transform trans)
    {
        trans.position = Vector3.zero;
        trans.localRotation = Quaternion.identity;
        trans.localScale = new Vector3(1, 1, 1);
    }
}
//拡張メソッドは JavaScript の機能として備わっていません
//この機能を使うには、C# を使用してください
import UnityEngine
import System.Collections


//すべての拡張メソッドを含むクラスを作成するのが一般的です
//このクラスは static でなくてはなりません
public static class ExtensionMethods:

         //一般的なメソッドのように使用されますが、
         //拡張メソッドは static と宣言する必要があります。
         //最初のパラメーターにはキーワード 'this' があり、
         //次に Transform の変数が続きます。この変数は
         //拡張がどのクラスの一部になるかということを示しています。
    public static def ResetTransformation(trans as Transform):
        trans.position = Vector3.zero
        trans.localRotation = Quaternion.identity
        trans.localScale = Vector3(1, 1, 1)

SomeClass

Code snippet

using UnityEngine;
using System.Collections;

public class SomeClass : MonoBehaviour 
{
    void Start () {
                //メソッドの宣言のときにはパラメータがあったにもかかわらず     
                //この拡張メソッドにパラメータを渡さないことに注目してください。
                //このメソッドを呼び出す transform オブジェクトが
                //自動的に最初のパラメータとして渡されます。
        transform.ResetTransformation();
    }
}
//拡張メソッドは JavaScript の機能として備わっていません
//この機能を使うには、C# を使用してください
import UnityEngine
import System.Collections


public class SomeClass(MonoBehaviour):

    private def Start():
                //メソッドの宣言のときにはパラメータがあったにもかかわらず     
                //この拡張メソッドにパラメータを渡さないことに注目してください。
                //このメソッドを呼び出す transform オブジェクトが
                //自動的に最初のパラメータとして渡されます。
        transform.ResetTransformation()