littlewing

人間とコンピューターとメディアの接点をデザインするために考えたこと

Unity Bolt Tips3.Formula Unitを利用する

Bolt Tips 連続記事

前回の続きです

Boltには Formula Unit という、論理式や数式を直接評価できる強力なユニットがあります。

f:id:pigshape:20200905192651p:plain
Formula Unit 利用例

簡単に言うと、Unit内で テキストコードを書くことで、if文や計算式を記述できます。

その使い方を書きます。


Formula Unit のメリット

  • 通常Boltで分岐処理や加減算処理を行うには、Branch Unit (IF文) や Add Unit (足し算) などを利用するのですが、複雑な計算を記述するとノードが複雑なり、読みづらくなってきてしまいます。

  • Formula Unit に直接テキスト形式のコードを記述することで、ある程度複雑な分岐を簡潔に記載することができ、書きやすさ、読みやすさが向上します。

Formula Unit のデメリット

  • パフォーマンスが悪い(遅い)です。
  • オーバーヘッドが発生してしまうため、通常の演算子ユニットを利用するのに比べて Formula Unit のを使用する方が著しく遅くなるとマニュアルに記載されています。
  • そのため、Updateなど毎フレーム呼び出す処理中で利用する事は推奨されていません。

Formula Unitの使い方

  1. Bolt編集画面で、右クリックから Formula Unitを検索、選択します。 f:id:pigshape:20200905193803p:plain

  2. Formula Unitは 数式を入力するテキストフィールドと、入力引数の数を指定するInputsの2つの項目があります。
    f:id:pigshape:20200905193943p:plain

  3. テキストフィールドに条件式などを記述することで、任意の制御を行えます。

    • 入力引数は前から、a,b....z とアルファベット変数に割り当てられるので、式内で利用できます。
    • if 文や3項演算, Vector2/Vector3/Vector4 型なども扱うことができます。
    • abs/sin/cos/floor などの数式も利用できます。
      f:id:pigshape:20200905194546p:plain
  4. 記述内容に意味はあまり無いですがサンプルとして f:id:pigshape:20200905195130p:plain

  5. 式の内容にエラーがある場合は、例外が発生します。
    f:id:pigshape:20200905200413p:plain

EvaluationException: no viable alternative at input '<EOF>' at line 0:-1
Bolt.Dependencies.NCalc.Expression.Evaluate (Bolt.Flow flow) (at <......>:0)

f:id:pigshape:20200905200427p:plain


使える式や制御方法の詳細はマニュアルを確認してください。

docs.unity3d.com

続き

littlewing.hatenablog.com