# Unity C# スクリプトから C/C++/C# 関数を呼び出す

> Call functions from your C or C++ code in your Unity project.

Unity プロジェクトで、C、C++、または C# プラグインから関数を呼び出すことができます。

Unity は Emscripten を使用して、C/C++/C# コードのソースを WebAssembly にコンパイルします。そのため、C/C++/C# コードでプラグインを作成し、Unity C# スクリプトからこれらの関数を呼び出すことができます。

JavaScript プラグインから関数を呼び出すには、[Unity C# スクリプトから JavaScript 関数を呼び出す](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js-to-unity.md)を参照してください。

## C/C++/C# プラグインを Unity プロジェクトにインポートする##import-your-c/c++/c-plug-in-into-your-unity-project

Unity プロジェクトで C/C++/C# プラグインコードから関数を呼び出せるようにするには、プラグインを Unity プロジェクトにインポートする必要があります。

JavaScript プラグインファイルを `Assets/JSPlugins` などの任意のフォルダーに配置します。

## Unity で使用できる C++ コードの例##example-c++-code-that-you-can-use-in-unity

C++ (.cpp) を使用してプラグインを実装する場合、名前マングリング問題を避けるために、関数を C リンケージ (`extern “C”`) で宣言する必要があります。以下のコードは、Unity プロジェクトで呼び出し可能な簡単な関数のある C++ プラグインの例です。

```cpp
#include <stdio.h>

extern "C" void Hello ()
{
    printf("Hello, world!\n");
}

extern "C" int AddNumbers (int x, int y)
{
    return x + y;
}
```

**ノート**: Unity は Emscripten バージョン 2.0.19 ツールチェーンを使用します。

Unity プロジェクトで以下の Unity C# コードを使用し、C++ 関数を呼び出します。

```cs
using UnityEngine;
using System.Runtime.InteropServices;

public class NewBehaviourScript : MonoBehaviour {

    [DllImport("__Internal")]
    private static extern void Hello();

    [DllImport("__Internal")]
    private static extern int AddNumbers(int x, int y);

    void Start() {
        Hello();
        
        int result = AddNumbers(5, 7);
        Debug.Log(result);  
    }
}
```

## 追加リソース##additional-resources

* [ブラウザースクリプトとの相互作用](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting.md)

* [JavaScript プラグインの設定](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js.md)

* [Unity C# スクリプトから JavaScript 関数を呼び出す](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js-to-unity.md)

* [Unity C# スクリプト関数を JavaScript から呼び出す](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-unity-to-js.md)

* [Unity C#、JavaScript、C/C++/C# コード間のコールバックの作成](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-example.md)
