アニメーターの高速化
アニメーターを呼ぶときにそのまま文字列で指定するのではなくハッシュキーに変換してから呼ぶと早くなる
例
文字列をハッシュに変換する
当たり前だと思われますがhashのほうがはやいのでハッシュに変換するといい
マネージャーを作ってまとめて回せるとなおよい
static readonly int WalkStaticHash = Animator.StringToHash("Walk");
void Start()
{
Animator anim = GetComponent();
//遅いもの
anim.Play("Walk");
//早い
anim.Play(WalkStaticHash);
}
Object型は実際は値型(intなど)を扱うことができないがボックス化によって値型も格納することができる。
int n =10;
//Boxing(ボックス化)
object o=n;
//UnBoxing(ボックス化解除)
n = (int)o;
ボックス化の内容は
まず最初にintを持っているオブジェクトを生成する
その後そのボックスに代入したい値を入れる
最後にボックスをオブジェクトに渡すことで実装している
public class IntBox:object
{
public int Value;
}
void Start()
{
int n =10;
//Boxing(ボックス化)
IntBox box =new IntBox();
box.Value = n;
object o = box;
//UnBoxing(ボックス化解除)
n = ((IntBox)o).Value;
}
回避方法
Textの場合だったらobjectをそのまま使うのではなくToString()メソッドでStringにしてあげることで避けられるだがGCAllocは発生する