Version: 2019.1
Windows Playe - IL2CPP ビルドファイル
ユニバーサル Windows プラットフォーム

Windows Player - IL2CPP 用の C++ ソースコードプラグイン

IL2CPP スクリプティングバックエンドを使用するときに、C++ (.cpp) コードファイルを Unity プロジェクトに直接加えることができます。これらの C++ ファイルは Plugin インスペクター内でプラグインとして機能します。Windows Player と互換性を持つように C++ ファイルを設定すると、Unity はマネージアセンブリから生成された C++ コードと共にそれらをコンパイルします。.cpp ファイルをクリックし、Inspector ウィンドウの Platform settings セクションで適切な Windows オプションを選択します。

C++ ファイルのプラグインインポーター設定
C++ ファイルのプラグインインポーター設定

関数は生成された C++ コードでまとめてリンクされているため、_P/Invoke への別の DLL はありません。このため、DLL 名の代わりに "__Internal" キーワードを使用します。これにより、関数をランタイムにロードするのではなく、関数を解決するのは C++ リンカーの役割となります。以下はその例です。

[DllImport("__Internal")]
private static extern int
CountLettersInString([MarshalAs(UnmanagedType.LPWStr)]string str);

このような関数を NativeFunctions.cpp で以下のように定義することができます。

extern "C" __declspec(dllexport) int __stdcall CountLettersInString(wchar_t* str)
{
    int length = 0;
    while (*str++ != L'\0')
        length++;
    return length;
}

リンカーが関数呼び出しを解決するため、マネージ側の関数宣言 (つまりマネージランタイムで実行される C# コード) で発生するエラーは、ランタイムエラーではなくリンカーエラーになります。これはまた、ランタイムに動的な読み込みを行う必要がないことを意味し、関数は C# から直接呼び出されます。これにより、P/Invoke 呼び出しのパフォーマンスオーバーヘッドが著しく減少します。

参照

プラグインインスペクター

Windows Playe - IL2CPP ビルドファイル
ユニバーサル Windows プラットフォーム
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961