FlowCanvasを使ってみる

ビジュアルスクリプトを使ってみます。

Playmakerなんかが一番有名ですが、今回使うのは以前セールで入手したこちら。   ビジュアルスクリプトは初めてですが、どんな感じなのかなと以前から気にはなっていました。 UnrealEngineなんかではブループリントとかいうノードタイプのビジュアルスクリプトが基本らしいですし、少し触ってみても良いかなと。
対応しているプラットフォームは Windows、Mac、Linux、Web Player、WP8/WSA とのこと。 WebGLではおそらく動きませんでした。ただWebGLはどうにもビルドが上手くいかないことがあるので、これが原因なのかは微妙ですが。

使っていきます。

FlowScriptControllerコンポーネントをゲームオブジェクトに追加します。 途中で出るダイアログは、作ったノードをオブジェクトにそのままくっつけるか、アセットとして保存してPrefabのように取り付けるかどうかの選択です。ただ、後で簡単に変更できます。削除とかしたら普通に消えますが。
表示されるこの画面でオブジェクトの動きを設定していきます。 今回はCubeに追加しました。 何か追加するときにはこのウィンドウ上で右クリックをすると色々表示されます。 動画のような感じで、キーワードを入力すればそれっぽいのが見つかります。 +,-なんかのオペランドもキーワードで表示されます。
処理の流れを作るときは、ノードの黒丸からドラッグドロップで次のノードにつなげていきます。 こういうふうに、見たまま感覚的に処理を作れるので、覚えることは少ないです。勿論、スクリプトで書いた方が早い場合もありそうですが。 ノードはUnityのエディターと同じようにctrl+dキーで複製できます。
感覚的に使えるんですが、それでも最初は分からないところがあったので、そこだけメモっておきます。
変数の追加
BlackBoardというコンポーネントが変数を管理しているようです。 AddVariableボタンから変数を追加できます。int,float,追加したい型をキーワードで入力すれば出てきます。
扱える型の種類を編集する
少し使ってみれば分かりますが、デフォルトの状態だとすべての型やコンポーネントを扱えるわけではありません。例えば、変数の追加で、uGUIの[Text]を追加しようとして検索をしても見つかりません。 取り扱えるコンポーネントの管理は「Tools」➡「ParadoxNotion」➡「FlowCanvas」➡「PreferredTypesEditor」から操作できます。 PreferredTypesEditorウィンドウのAddNewTypeで追加できます。クラス(コンポーネント)を一つづつ追加できますし、UnityEngine.UIという風にすれば名前空間ごとに指定できるようです。C#のusingを使うのと同じようなものだと思います。 ウィンドウ右側の×ボタンで非表示にもできます。使いそうにないものは消しておいた方が見やすいです。加えて検索をするときにエディターの反応が早くなります。
ノード自体の見方
処理の流れをつなぐ黒丸(接続する点)と値を指定する黒丸があります。 処理の流れを繋ぐときは左から右に流れます。 対して値を指定するときは右から左につなぎます。 処理の流れがそのノードに来たら、値につながれているノードから値を受け取ります。
分岐、ループ処理
If分岐やwhile、forloop、foreachも当然あります。 IFに相当するのがswitchConditionです。 whileとforループはキーワードにそのまま入力すれば表示されます。 繰り返し処理のノードはDoがループ中、抜けだしたらDoneから処理が伸びます。 ただ、forloop中のカウンタ変数にアクセスするにはどうすれば良いのかが不明でした。できないのかな? あんまりする場面もないかもですが。
処理をまとめる(マクロ)
まとめたい処理をドラッグドロップで範囲選択して、ノード上で右クリック。「ConvertToMacro」でアセットとして保存する形でまとめることができます。 マクロはダブルクリックで詳細を見ることができます。 注意が必要ですが、BlackBoardにある変数を含めてマクロにすると、その変数は参照できません。 マクロ内に残ってはいますが、上手く動いてくれません。 そのため、下の動画のように、マクロの外から引っ張る必要があるかと思います。

だいたいこんな感じで使うことができました。 スクリプトの方が良さそうな気もします。 ただ使いどころがなきにしもあらず。
スクリプトが使えれば十分です。
十分ですが。
ここからは個人的な話なんですが。
そもそもなんで使おうと思ったかというと、Unity1Weekにゲームを出してみようとしたんですが、WebGLでビルドするにはjavaScriptじゃないといけないんだと思い違いがありまして、javaScriptは触ったことがないからビジュアルスクリプトで処理を書いてみようかなと思いまして、FlowCanvasはWebGLにも対応しているから大丈夫だな、FlowCanvasを使ってみよう、という思考の流れでした。
バグだらけの思考でした。
以前はJavaScriptファイルをUnityのプロジェクト内で作ることもできたみたいですが、2018.2.xバージョンからJavaScriptは使えなくなったようです。動きはするみたいですが。 つまりC#推奨。 で、C#でもWebGL環境で動くみたいですし。 とどめに、FlowCanvasはWebGLじゃあ、おそらく? 動かないっぽいし。 何一つ正解がありませんでした。 そのことに1Week用のゲームを作り終えてビルドも通って、公開しようとしたところで気づく。 1Week用のゲームはC#で作り直したんですが、ランキング機能を付けたりすると何故かビルドが通らなくなってしまいました。 1日かけてみたけど、ビルドが通らない。どうにもどこをいじくれば良いのか分からない。Pathに日本語が入っているとダメとかも見たんですが、そんなこともない。 ということで1Weekの期限も過ぎていたのでギブアップ。1Week自体は期限をすぎてもゲーム投稿できるみたいですが、遅れすぎてもなんですし、次回を待つことに。   2018/11/24~2018/11/26の三日間はそんなことをしていました。 何一つ生み出さなかった……。
供養も兼ねて、ここでどんなゲームだったか、動画だけこっそりと置いときます。 画像の数が10個かどうかを判断するだけのゲームですが。 まあ、しゃーない。次いこう。