開発時にUnityのinternalなAPIにアクセスできるUnity.InternalAPIEngineBridgeDev

開発時にUnityのinternalなAPIにアクセスできるUnity.InternalAPIEngineBridgeDevの紹介です。

開発時にUnityのinternalなAPIにアクセス

ツールなどを作る際に、UnityのinternalなAPIにアクセスをしたいことが稀にあります(基本的にはやるべきじゃないですが)。
そんなときには大抵リフレクションを使って頑張ることになりますが、リフレクションを使う箇所が多いと開発効率が大幅に低下します。

そんな時に使えるのがUnity.InternalAPIEngineBridgeDevです。
これはUnity自体のAssemblyInfoにInternalVisibleToとして指定されたアセンブリの名前です。

github.com

これはおそらくおそらくUnity社内で開発を行う際に使われるももので、プレビュー版として開発中のGraphTools Foundationのドキュメントにもその名前が記載されています。

docs.unity3d.com

要は、上記のAssemblyInfoに定義された名前を持つasmdefを自身で作成することで、そのアセンブリ内からはinternalなAPIにアクセスすることができます。

開発中はこれを使用し、最後に当該箇所をリフレクションに置き換えることで開発効率を向上させることができます。

ちなみにInternalVisibleToについては以下の記事にまとめていますので、こちらを参照してください。

light11.hatenadiary.com

使い方

既に上に書いてしまいましたが、使い方としてはAssemblyInfoに定義された名前を持つasmdefを自身で作成するだけです。

現状では以下のアセンブリ名が定義されていることを確認できます。

[assembly: InternalsVisibleTo("Unity.InternalAPIEngineBridgeDev.001")]
[assembly: InternalsVisibleTo("Unity.InternalAPIEngineBridgeDev.002")]
[assembly: InternalsVisibleTo("Unity.InternalAPIEngineBridgeDev.003")]
[assembly: InternalsVisibleTo("Unity.InternalAPIEngineBridgeDev.004")]
[assembly: InternalsVisibleTo("Unity.InternalAPIEngineBridgeDev.005")]

関連

light11.hatenadiary.com

参考

github.com

docs.unity3d.com