---
title: "拡張メソッド"
content_type: tutorial
url: "https://learn.unity.com/tutorial/extension-methods-jp?language=ja"
language: ja
difficulty: intermediate
duration_minutes: 5
unity_version:
  - "2019.3"
  - "2019.2"
  - "2019.1"
  - "2018.4"
  - "2018.3"
  - "2018.2"
  - "2018.1"
  - "2017.4"
  - "2017.3"
  - "2017.2"
  - "2017.1"
  - "5.x"
  - "4.x"
supported_unity_versions:
  - name: "2019.3"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2019.3"
  - name: "2019.2"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2019.2"
  - name: "2019.1"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2019.1"
  - name: "2018.4"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2018.4"
  - name: "2018.3"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2018.3"
  - name: "2018.2"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2018.2"
  - name: "2018.1"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2018.1"
  - name: "2017.4"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2017.4"
  - name: "2017.3"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2017.3"
  - name: "2017.2"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2017.2"
  - name: "2017.1"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=2017.1"
  - name: "5.x"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=5.x"
  - name: "4.x"
    url: "https://learn.unity.com/tutorial/extension-methods-jp.md?language=ja&version=4.x"
last_updated: "2026-08-04T14:23:58.000Z"
---

# 拡張メソッド

C# の拡張メソッドを作成・実装し、既存の型に機能を追加する呼び出し方法を学びます。

 拡張メソッドを作成、実装、および呼び出す方法を学びます。

## 拡張メソッド

[Video](http://www.youtube.com/watch?v=C7mdDB3zY1A)

**ExtensionMethods クラスのコード**

```csharp
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);
    }
}
```

**SomeClass クラスのコード**

```csharp
using UnityEngine;
using System.Collections;

public class SomeClass : MonoBehaviour 
{
    void Start () {
        // メソッドの宣言に引数があるのに
        // この拡張メソッドに引数を渡していないことに注意してください。
        // このメソッドを呼び出す transform オブジェクトが、
        // メソッドの最初の引数として渡されます。
        transform.ResetTransformation();
    }
}
```
