hiyorinのブログ

主にUnityに関してのメモを残していきます

Unityちゃん、揺れもの、Reflectionについて

Unityで揺れものを実現させたい場合Unityちゃんの

SpringManager,SpringBone,SpringColliderを使うと簡単に実装できます。

 ですが、パフォーマンス確認中に若干ボトルネックになっているところがあった。

 

Unityのプロファイラーで確認してみるとSpringManagerが毎フレーム重い処理をしています。

Unityちゃんの揺れものはPhysXに頼らずに自前で演算しているので毎フレーム物理演算のスクリプトが実行されているのはわかるのですがそれにしても遅い気がする。

なのでSpringManagerのスクリプトを確認したところ毎フレームReflectionを使ってSpringBoneの変数に値を入れていました。

 

Reflectionとは通常より1000倍くらい重い処理になります。

詳しくは下記URLに詳しく乗っています。

実行時型情報 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C

 

Reflection使わずにアクセスするように変えたら10~20msほど速くなりました。

頻繁に実行されるところにReflectionを使うのはあまり良くないかもしれません。