Unity+Bolt強力なビジュアルスクリプティングツール!使い方トップ

2020年6月7日

2年以上PlayMakerを使い続けて来た私が、チュートリアルを済ませただけで、PlayMakerを捨てて飛びついたほど使い勝手の良いビジュアルスクリプティングツールであるBolt。解説用の動画などが海外向けしかなかったので、自分の覚書も兼ねて、ここにまとめていきたいと思います。なぜPlayMakerを簡単に捨てたかなども合わせて紹介します。

Boltの使い方・チュートリアル

とりあえずなんでも結論から書く。インストールや使う準備。チュートリアルの内容を個別に分けた内容分けていますので、必要なページから使い方などを見てください。※現在編集中のため、リンクのないものは順次追加します

機能補足
インストールAssetStoreで購入した前提
体験版とかあればいいんですけどね
使う上で覚えておいた方がいいことエディターでの使う上での便利機能など
知ってると手際に大きく関係すること
主に自分が使ってることメインになります
入力系イベントボタンやマウスなどの入力処理
実際にゲームでキャラクターを動かす方法をあわせて紹介
UIとの連携(ボタン編)UIとBoltを連携する上でボタンは必須
他のUIも必要だけどマストなボタンを使ったパターン
応用編:キャラ操作2Dアクションゲームで実際に使っている要素を見てみます
当たり判定の使い方もありますよ
変数を使うBoltで変数を使うためのお勉強
多すぎるとこんがらがるので変数名のセンスが必要
マクロを使う超重要!
これがあることで、Boltに乗り換えました
データ保存アプリケーションレベルでデータを保存可能
クリア済み状態などを保存したり出来ます
for/foreach基本っぽいけど意識しないと出てこない
配列などを使う場合はこれが必要になります
地味に開始終了処理が入れやすいので、
プログラムよりキレイにコーディングできそう
当たり判定:2D編2次元の当たり判定をできるようになりましょう
やれることは多いので、カスタマイズできるようになってね
当たり判定:3D編あんまり変わらないけど、3Dでも当たり判定
やっときましょう
自作の関数を登録自身で作ったUnitを利用することが出来ます

Boltってなんぞ?何がいいの?

まだよくBoltのことが分かってない人はこちらから読んでみてください。興味があれば、使い方の方を見て、いけるやん!?って思ったら導入してみれば良いかも。

Unityで使えるビジュアルスクリプティングツール

Boltとは、Unityで使うことができるビジュアルスクリプティングツールのことです。ビジュアルスクリプティングツールとは、プログラムをコーディングするのではなく、予め用意された機能を組み合わせながら、視覚的にゲームを作ることができるツールのことです。ここだけだとナンノコッチャ?という感じですよね。実際の編集画面はこんな様子です。

上のプログラムは「Start関数でTakeDamageという関数でTrueだったらDebug.Logにsuccessと表示、FalseだったらDebug.Logに"false"と表示」というプログラムになっています。TakeDamageにはdamageという変数を引数に入れて実行されます。Update関数は何もしてません。

というものがソースコードではなく、このように可視化されたフローとして見ることが出来ます。もちろん他の処理をどんどん書き足したい場合は後ろにUnitを追加することで変更できますし、ログを表示する処理が不要な場合は他のUnitにつなぐことで切り替えることが出来ます。

プログラムだとありがちな使わなくなるテストコードなども、フローの入り口を変更するだけで一気に無視できるのでかなりわかりやすいですね。

マクロ is God!PlayMakerを一瞬で捨てた訳!!

Unityのビジュアルスクリプティングとして長く頂点に君臨しつつ、今なおユーザーが多いPlayMakerですが、2年以上使い続けてきた自分はBoltのチュートリアルを見て、即座に乗り換える決意をしました。まだ使ったことがない人にはピンと来ないこともあるかもしれませんが、兎に角大きく違う部分なのです

マクロが本当に便利、というか普通のプログラム感覚に近い

Boltにはマクロという機能があります。このマクロというのは、Boltのフローなどで一部作成した同等の機能を関数のように他の場所でロジックを使い回すことが出来ます、しかもその戻り値まで取得することが出来、判定文や文字成形などなんでもござれになっています。

この関数の使い方のような利用方法は、プログラマなら誰でも思いつくと思いますが、実はPlayMakerにはこの機能が搭載されていません。一応テンプレートという機能で使い回すことができるのですが、変数のやり取りがグローバル経由でしか出来なかったり、入れ子の入れ子のような使い方が出来なかったり(2段めで同じ変数などを見てしまう)、戻り値がなく、イベントを投げたりテンプレートが終了したかどうかでしか終了判定ができなくなっています。

これに関しては試しにサポートしている方に問い合わせてみましたが、駄目みたいでした。

かなり拙い英語に答えていただいたのはありがたいですが、どうやら無理っぽいですね。無理やりループ回数などを判断に入れると使えるかもしれませんが、正直その使い方はプログラマーの感覚とはずれてると思います。

まー、その必須とも思えるような機能をマクロという外だしすることができるのがかなり使いやすいポイントとして上げられます。マクロは外部ファイル化され、他のフローにも共通で取り出せます。当然ですが、マクロ内の編集を行った場合、利用箇所全てに反映されますので便利です。(PlayMakerは全部コピペで変更のたびにあらゆる箇所で修正してました)

フロー!?ステートマシン!?両方が管理できる!?

Boltではフロー(FlowGraph)というものを作って、プログラムのようなことを作ることが出来ます。その他に、状態遷移を管理することができるステート(StateGraph)も作ることが出来ます。例えば下記の例だと、Startの状態とNextStateという2つの状態があり、それを線でつなぐことが出来ます。線の中央には遷移する条件決めることができ、条件を満たすことでNextStateに状態が変わります。また、それぞれの状態にはフローを作ることができ、状態ごとに大別して、細かい処理はステートの中に記載することができるわけです。また状態遷移の矢印内でもフローを作ることができ、状態ごとの処理と遷移する処理を別々に管理することが出来ます。

PlayMakerではステートごとの管理は出来ますが、遷移する処理もステートに書く必要があったり、ステートの中に詳細を書くことが出来ず、全部ベタが書きする必要があるため、非常に管理がしづらくなります。これらの階層的な情報をシンプルに記載することができるのもBoltの強みだと言えます。状態遷移管理ができることでめちゃめちゃプログラムが管理しやすくなり、バグを生みにくくすることが出来ます。自分はその点でPlayMakerを利用してましたが、過去作の状態遷移でぐじゃぐじゃになってかなり苦労しました。そういった点でもBoltに軍配が上がってしまいます。贔屓とかじゃないよ!?

自作のUnitを追加可能!引数戻り値をバッチリ管理!!

また、自分がほしいと思った機能の中の1つとして、自作のUnitを導入することができるかどうかです。上でも少し触れましたが、自作したUnitをフローの中に組み込むことが出来ます。しかも引数と戻り値をしっかり認識して、分岐や判定などを行うことが出来ます。どうしてもBoltでの作成が難しい場合は、自作したUnitを使うことでメイン実装はBoltに専念することができるのはとてもいいポイントです。

自作したUnit

いつでも最低限の回避方法が確立されているというのはプログラマーにとってはかなり心に余裕が出来ます。たとえ最終的に自作Unitが多くなったとしてもそれらを分解する余地はあるし、バグ発見をする上では簡単に行うことができるでしょう。

欠点としてはおそらくこの機能を有効にすると少しだけUnit追加時の検索が重くなるように感じます。まぁ耐えれないほどではないので今のところはよし!あまりに重いようであれば対策が必要。

ちなみにPlayMakerでも同じようなことはできるのですが、自作したアクション(Unitのこと)では何が戻り値なのかがわかりません。引数はそれっぽいことはできるのですが、セットしないでも動かせるのでなんか関数っぽさはありません。もちろん引数に変更があった場合、PlayMakerではエラーも起きないので動かすための引数が変わった場合も実行するまで不具合に気づけないという事態が起きます。エンバグ怖いですね。ということでこの機能に関しても圧倒的Bolt!!!!!!!

一つだけ注意!プログラムの知識がいらないというわけではない!

ここまでは割と便利、最強!という感じに推してますが、一つだけ注意が必要です。それはビジュアルスクリプティングを導入すれば、プログラムの知識がいらないというわけではないということです。

というのもフローで作る構成は、基本的にプログラムを可視化しているということです。なので基本的にはプログラマーが必要になるロジックを作れることが必要になります。また、チュートリアルの動画を見た限り、かなりスラスラとすすめていますが、Unityの知識も当然必要になります。全然Unityを知らない人が見たら、アニメーターのイベントに引っ掛けている箇所など、Unityで使いこなせる前提で話が進められていたため、少し難易度が高いように感じられました。

なので、もし導入する場合であっても、基本的なプログラムの勉強は行うようにしたほうが良いでしょう。逆に言うと、フローをしっかり書くことができれば、それをコード化したものがプログラムになりますので、場合によってはプログラムの技術もアップしやすいと思います。というのもフローは言ってみればフローチャートと同様の機能なので、ロジックの整合性や正しい流れなどを確認しながら作ることが出来ます。コードだと曖昧にしがちな箇所も可視化されることで視覚的に把握できますので、そういった意味では自己学習にももってこいだと言えます。

つまり、Boltってわけ!!!

すでにPlayMakerユーザーの人はダウンロードに走ってると思いますが、なんだかよくわからないって人は各使い方のリンクで気になる使い方があれば見てみてください。状態遷移のプログラムは正直ビジュアル化してあることでかなりの不具合を防ぐことが出来ます。それが70ドル程度で購入できるので本当におすすめです。

これからビジュアルスクリプティングに挑戦したいという人は是非選択肢に入れてみてはいかがでしょうか?