【Unity】拡張メソッド(Extension Methods)

Transform クラスをリセットするメソッドを追加したい場合*1

// こんな感じで呼び出したい
transform.ResetTransformation();

拡張クラスを書く

// ExtensionMethods.cs
using UnityEngine;
using System.Collections;

// 拡張メソッド. このクラスは static にする必要あります
public static class ExtensionMethods
{
    // 普通のメソッドと似てますが、
    // 拡張メソッドの場合、以下2点が必須です
    // 1. static にする
    // 2. 第1引数に 'this' キーワードを追加
    public static void ResetTransformation(this Transform transform)
    {
        transform.position = Vector3.zero;
        transform.localRotation = Quaternion.identity;
        transform.localScale = Vector3.one;
    }
}

メソッド使用

// SomeClass.cs
using UnityEngine;
using System.Collections;

public class SomeClass : MonoBehaviour
{
    void Start () {
        transform.ResetTransformation();
    }
}
f:id:kou_yeung:20131119003546p:plain
入力候補にも表示されます

*1:参考:http://unity3d.com/learn/tutorials/modules/intermediate/scripting/extension-methods