アドレスの表示
主にデバッグ用に、アドレスを表示する場合。
C#では直接アドレスを見るのは推奨されませんが、unsafeというのを使うことでアドレスを見ることが可能になります。
ビルドオプションの指定
Unityでは、プロジェクトのassetsフォルダ内に「smcs.rsp」というファイルを作成。
この中に「-unsafe」と記述。
これは、ビルド時のオプションやプリプロセッサ指定を記述できるようです。
C#のコードでの記述
少し特殊で、
// クラスCFooのメンバ変数 (float)CFoo.xが存在するとする. CFoo e = new CFoo(); e.x = 10.5f; unsafe { fixed(float* p = &e.x) { MonoBehaviour.print("maddress: " + ((int)p).ToString("x")); } }
のように記述することで、クラス内のメンバ変数のアドレスを表示できます。
unsafeで囲み、メンバ変数のアドレスを固定化するためにfixedで囲っています。
MonoBehaviour.printで、「((int)p).ToString("x")」が16進数のアドレスを文字列として指定している箇所になります。