docs.unity3d.com
    目次を表示する/隠す

    DllImport と内部呼び出し

    ネイティブ関数を呼び出すには、以下のように [DllImport] を使用します。

    [DllImport("MyNativeLibrary")]
    public static extern int Foo(int arg);
    

    Burst は、Unity 内に実装されている内部呼び出しもサポートしています。

    // UnityEngine.Mathf 内
    [MethodImpl(MethodImplOptions.InternalCall)]
    public static extern int ClosestPowerOfTwo(int value);
    

    DllImport が対応しているのは ネイティブプラグイン だけであり、kernel32.dll などのプラットフォーム依存ライブラリには対応していません。

    すべての DllImport と内部呼び出しで、パラメーターまたは戻り値の型として使用できるのは以下の型のみです。

    型 サポートされている型
    ビルトイン型および intrinsic の型 byte/sbyte
    short/ushort
    int/uint
    long/ulong
    float
    double
    System.IntPtr/System.UIntPtr
    Unity.Burst.Intrinsics.v64/Unity.Burst.Intrinsics.v128/Unity.Burst.Intrinsics.v256
    ポインターと参照 sometype*: このリストに記載の他の型へのポインター
    ref sometype: このリストに記載の他の型への参照
    ハンドル構造体 unsafe struct MyStruct { void* Ptr; }: ポインターフィールドを 1 つ含む構造体
    unsafe struct MyStruct { int Value; }: 整数フィールドを 1 つ含む構造体
    Note

    構造体の値渡しはサポートされていません。構造体はポインターまたは参照を通じて渡す必要があります。唯一の例外としてサポートされているのは、ハンドル構造体です。ハンドル構造体は、ポインターまたは整数型のフィールドを 1 つ含む構造体です。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)