0.1.9
言語
- メソッドの多重定義に対応しました。同じ名前で引数の違うメソッドを並べられます。
- staticなヘルパークラスのメソッドと、拡張メソッドを呼べるようになりました。
- Behaviourでinterfaceを実装できるようになりました。同じinterfaceを実装したBehaviourは、
種類を混ぜて1つの配列に入れ、同じ呼び出し1行で動かせます。相手の型を知らないまま呼べます。 - Behaviourのクラスを型引数にしたGetComponentを書けるようになりました。子や親から探す形もあります。
- ジャグ配列(int[][])と、Behaviourの配列に対応しました。
- foreachでTransformの子とstringの文字を回せるようになりました。
- 増減(x++)と複合代入(x += 3)を、式の値としても使えるようになりました。
- switch式でfloatを扱えるようになりました。switch文のcase nullも書けます。
- 文字列補間の書式指定({x:F2})と桁揃え({x,8})を書けるようになりました。
- structとrecordのstatic readonlyを書けるようになりました。
- object型の引数に値型を渡せるようになりました。objectから値型へ戻すキャストも書けます。
- 範囲外の整数キャストが、C#と同じ切り詰めになりました。以前は実行時にそこで止まっていました。
- typeof(string).Nameのような継承されたメンバの読み取り、値型の引数なしnew、
objectと文字列の連結も書けるようになりました。
エディタ
- 同期などの属性をusing Tsukimi;だけで書けるようになりました。UdonSynced、UdonBehaviourSyncMode、
RecursiveMethod、FieldChangeCallbackが同じ名前空間にあります。 - Create/T# Scriptで作るスクリプトの雛形も、using Tsukimi;だけになりました。
- 別のフォルダにある型を参照したときのエラーメッセージを変えました。名前が見つからないと言うだけでなく、
そのファイルが今のコンパイル範囲の外にあることも伝えます。 - コンパイルは通るのに実行すると壊れるパターンを、いくつかコンパイル時のエラーにしました。
以前はエラーも警告も出ないままアセンブルまで通り、動かして初めて分かる状態でした。
速度
- 参照型の配列を添字で読むのにかかる時間が、要素数に比例しなくなりました。
オブジェクトを配列に並べてループで回す書き方に効きます。
同梱サンプル
- Showcaseを17本に増やしました。増えた1本は、種類の違うBehaviourを1つの配列に混ぜて、
同じ呼び出し1行で動かすinterfaceの例です。
修正
- 再帰(RecursiveMethod)を含むプログラムが、Unity上で1つもアセンブルできませんでした。
- 引数のあるpublicメソッドを、別のBehaviourから呼べませんでした。
- 参照型のメンバを持つrecordの等値比較が、実行時に止まっていました。
移行の注意
- 0.1.8までusing UdonSharp;とusing Tsukimi;を両方書いていた場合は、using UdonSharp;を消してください。
同じ名前の属性が両方にあるため、そのままだとどちらの属性か決められないというエラーになります。
既知の制限
- UdonBehaviourSyncModeを書いても、シーン上のUdonBehaviourのSynchronizationは変わりません。
手動同期にしたいときは、インスペクタのSynchronizationでManualを選んでください。