もくもくブログ

メモに近い。記事の正確性には期待をしないでください。

Follow me on GitHub

プラグイン公式ドキュメント特筆事項メモ

目的

プラグインの公式ドキュメント内で抑えておく箇所のメモ。
https://docs.unity3d.com/ja/2022.3/Manual/NativePlugins.html

マネージプラグイン

  • .NETコードで作成された.NETアセンブリ。DLLとして扱う。

ネイティブプラグイン

  • ネイティブコードによって作成されたプラグイン
  • Unityでアクセスできない機能を提供する
    • ネイティブ側のイベントにフックさせることも可能
  • プラグイン関数はUnity側ではC言語呼び出しインターフェースとして提供されるので、名前マングリングを避ける必要がある。

iOS

対応プラグイン一覧

公式を参照

プラグイン設定

  • 特定のフォルダ名を指定することでバンドルされたプラグインとして扱える。
    • 1つのプラグインとして見なされるとのこと。
      • 利点は不明
    • 対応フォルダ名
      • .androidlib
      • .bundle
      • .framework
      • .plugin

共通

  • プラグインのデフォルト設定
    • 特定のファイルパスになっている場合にデフォルト設定が付与される。
      • どのパスにも一致しない場合はエディタデフォルト設定が付与される。
      • iOS
        • Assets/Plugins/iOS
      • Editor
        • Assets/../Editor/(x86 or x86_64 or x64)
      • Windows/Linux/macOS
        • Assets/../Plugins/(x86_64 or x86 or x64)

マネージプラグイン

  • Auto Reference
    • 無効にすることでアクセスできるスクリプトを制限できる
      • コンパイル時間が短縮される。依存するアセンブリのみコンパイルされるため。
    • asmdef管理が必要だが、基本的にfalseにしておくと良い。
  • Validate Reference
    • プラグインが利用可能か調べる。ランタイムエラーを避けられる為、有効にしておくと良い。
  • Define Constraints
    • Defineを元にプラグインを実際にロードするかどうかを決められる。

その他Tips

マネージプラグイン

  • Unityをdll配置することで、マネージプラグイン内でUnity APIを使用することも可能。

ネイティブプラグイン

  • エディタ上の挙動として、プラグインを一度インポートすると、ネイティブのプラグインはアンロードできないのでUnity自体を再起動する必要がある。