2014年2月11日火曜日

Unity でライブコーディングを実現するアセットLivity

 

ライブコーディングといってもイベントなどで開発するあれではなくて。
今回試した「Livity」は、Unityエンジン上で直接コード編集ができて、しかも「オン・ザ・フライ」で変更が反映されるエディタ拡張アセット。

Livity
https://www.assetstore.unity3d.com/#/content/11281

ゲームを実行させながらいろいろコードに手が入れられる謎技術を搭載。
C#,UnityScript,Booと言語ごとにも販売しているけど、全部入りパックが割引だったので買ってみた。

使い方は簡単。
まずはアセット導入後、スクリプトを開こうとするといきなりLivityの機能でエディタ内に編集画面が出る。

で、オンザフライしたいスクリプトにusingディレクティブ Livity.Features.LiveCodingを追加し、
操作体調のメソッドの上で[Live]を宣言する。これで準備完了。(C#の場合。)

WS000004

オブジェクトを回転させるシンプルなスクリプトで試してみた。

この状態で実行ボタンを押すとY軸で回転するが、Livity内で数値を書き換えると即時反映される。なかなかに楽しい。
いちいちpublicプロパティにしてインスペクタで弄っていた数値まわりとかがすっきりするし、
なにより修正→また再生開始、の繰り返しで起きる時間ロスがまるっとなくなる。すばらしい。

たまにConsoleでエラー吐いたり、スクリプトの反映が不安定だったりと謎挙動が少し。
Livity内のコードとインスペクタで表示したコードが違っている場合は、インスペクタ側の歯車ボタンから
「Reset」を選んでやると最新に更新される。うまく動かない人は試してみよう。

もうひとつ強力なのがCodeWatches。Livity内で指定した変数の中身をリアルタイムで表示してくれる機能。
いちいち一時停止してログを確認しなくても、ぱっと見で正しい値が入っているかわかる。

スクリプトにusingディレクティブ Livity.Features.CodeWatchesを追加し、
Watch.Expression()の引数に監視したい変数を入れとくだけ。すると⇒の先に中身が表示される。

WS000005

今回の例はUpdateで足しこんでいるので高速で表示が変わっているが、これ単純に見やすい。
複数の変数を監視したいときなどはかなり強力だろうと思う。

Livity上での編集もそこそこ快適。補完もしっかり効く。
ただいまのところ、Ctrl+Sでセーブできなかったり、Ctrl+Zが効かなかったり妙な癖あり。(設定で変えられる?)
Livityですべてやるというよりは、スポット的な調整で使うといいのかもしれない。

0 件のコメント:

コメントを投稿