C#dynamicキーワードを使って変数やメソッドを動的に操作する方法です。Treeを使っています。IL2CPPでビルドするとランタイムエラーになります(本記事作成時点では)。これについては次の記事を参照してください。light11.hatenadiary.comエディタ拡張ではもちろん使えます。dynamic?dynamicはC#4.0から追加されたキーワードで、変数やメソッドに動的に(文字列で)アクセスできます。要するに、こんなことができます。(普通はコンパイルエラーになる)dynamicBehaviour.SomeMethod();上記のコードは、GetComponent()したMonoBehaviourのサブクラスにSomeMethod()が定義されていれば、正常にそのメソッドが呼ばれます。Treeを使う必要がありました。dynamicはこれらの代替手段と言えそうです。Treeを使っているとのことです。Treeよりもずっと簡潔に書けるためメリットは大きそうです。リフレクションよりはずっとパフォーマンスが良いです。Equivalentにする必要があります。この設定によりdynamicを使ったソースコードを記述できるようになります。Unity2018.3.6ではコンパイル時に下記のエラーが出てしまいました。4.x`に上げる必要があります。これでコンパイルエラーも出なくなりました。Reflectionの代わりに使うそれでは実際にdynamicキーワードを使ってみます。古いバージョンではReflectionを使わないと実現できなかったようなケースをdynamicで実現してみます。}}このSerializeFieldに下記のコンポーネントの参照を持たせます。}}無事実行されることが確認できました。ちなみに、変数やメソッドが定義されていない場合には例外が発生し、さらに変数がメソッドがprivateでも例外が発生しました。jsonやxmlへのアクセスも簡易的に書けるまたdynamicを使うとjsonやxmlの取り扱いが非常にシンプルで直観的に書けます。Dictionary等を使って煩雑に書く必要も、JsonUtilityを使って型を定義する必要もありません。System.Dynamic.DynamicObjectを継承したクラスを作る必要はあります。このあたりは素晴らしいライブラリがあるようなのでリンクで済ませてしまいます。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。インストールから基本的な使い方・注意点まとめ【Unity】【エディタ拡張】テクスチャを指定したUV座標で切り取って保存する【Unity】指定したアセットのAssetBundle名を取得する【Unity】【シェーダ】スクリプトからVP行列を渡してシェーダで座標変換に使う【Unity】【シェーダ】FloatやVectorをリニアライズ対象にするGammaアトリビュート月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。