本ページにはプロモーションが含まれます
PlaymakerUnity

【Unity】Playmakerのカスタムアクションのメリット

この記事は約5分で読めます。

はじめに

Unityのビジュアルスクリプトツール「Playmaker」は、プログラミングの知識が少なくても直感的にゲームやアプリを開発できる強力なツールだ。標準で用意されたアクションを組み合わせるだけで多くの処理ができるけど、真の力を引き出すためには「カスタムアクション」を自作することで、プロセスの時短やより複雑な処理を実行させることができる。このメモでは、Playmakerの基本とカスタムアクションを作るメリットを解説する。

カスタムアクションとは

Playmakerの基本

Playmakerは、状態遷移図(State Machine)を使って処理を視覚的に表現するツールだ。各状態(State)に「アクション」を追加することで、その状態で何をするかを定義する。これにより、コードを書かずにキャラクターの動きやUIの制御などを実現できる。用意されているアクションは豊富だけど、複雑な動作やカスタマイズ性が求められる場合、標準のアクションでは足りない場面が出てくる。

カスタムアクションの重要性

ここで登場するのがカスタムアクションだ。Playmakerには、Unity C#スクリプトを使って独自のアクションを追加する機能がある。これにより、ゲームに特化した動作や、自分のプロジェクトに合った細かい制御が可能になる。たとえば、特定の敵キャラクターの動きをランダムに制御したり、特殊なエフェクトを作り出すといった処理は、カスタムアクションを使うことで簡単に実現できる。

カスタムアクションの作成手順

カスタムアクションの作成手順はシンプルだ。以下に基本的な流れを紹介する。

  1. 新規C#スクリプトを作成
    • Unityエディターで新しいC#スクリプトを作成する。スクリプト名は、アクションの名前と同じにしておくとわかりやすい。
  2. FsmStateActionクラスを継承
    • スクリプト内で HutongGames.PlayMaker.FsmStateAction クラスを継承する。これがPlaymakerのカスタムアクションの基本クラスだ。
  3. 必要な変数や関数を定義
    • アクションに必要な変数や、実行したい処理を OnEnter()OnUpdate() 関数内に記述する。例えば、移動や回転、エフェクトの制御など、さまざまな処理を記述できる。
  4. [ActionCategory] と [ActionTarget] 属性を設定
    • ActionCategory でこのアクションのカテゴリを設定し、どこで使われるかを明確にする。また、対象とするオブジェクトやコンポーネントを指定することもできる。
  5. 完成したカスタムアクションをPlaymakerで使う
    • スクリプトを作成した後、Playmakerエディタに戻ると自動的にカスタムアクションとして表示され、ドラッグ&ドロップで使用できるようになる。

実例

キャラクター成長させて広告みて報酬もらうの放置モバイルゲームの内訳。
2人月くらい。ロジック考えたり、フロー引きながらコード書くよりUIとリソースまわりに7割くらい時間割いてる。

AdMob関連。過去のアプリから持ってきた。再利用率100%

ゲーム実装まわり。どれも実装部分を数行程度しか書いていない。3割くらい過去のアプリから持ってきた

再利用率100%。これも過去のアプリからそのまま持ってきた。
ここまでがカスタムアクション。

MonoBehaviourやstaticクラス。どれも10行程度。Enum、プレイヤーデータ以外は過去のアプリからそのまま持ってきただけ。

かなりの高確率で作ったカスタムアクションを次のアプリ開発に再利用できるのも強み。カスタムアクションの作りの仕様上肥大化したメソッド状態になりにくい。

ゲームのフローやロジックループはPlaymakerのステートグラフ内や標準アクションで作っているので
カスタムアクションは Playmakerの標準アクションで提供されていない機能特定のプロジェクト固有の動作 を追加するための手段にすぎない。標準アクションがカバーする範囲は広いけど、すべてのユースケースに対応できるわけではない。そのため、特定の機能を実装したい場合にカスタムアクションを作る必要が出てくる。

カスタムアクションを作るときは、特定の処理を効率的にPlaymakerで表現できるようにすることが目的であり、新しい機能をゼロから発明する というよりは、既存の標準アクションでできない部分を補完する形で作成することが多い。たとえば、ゲームに固有のロジックや、特別なエフェクト、特定のキャラクターの挙動を追加するといったケースだ。
このように、カスタムアクションは、標準アクションではサポートされていない機能を補完して、プロジェクトに柔軟性を持たせる ための手段と言える。

コーディングしたくないからPlaymaker選んだのに結局コーディングするのかよ……。そんなことはない。ノンコードでもサードパーティーのメソッドやStaticメソッド呼び出したりできるので、カスタムアクション同様、複雑な処理を実行させることも可能です。

まとめ

Playmakerは、直感的なインターフェースで初心者にも優しいツールだ。ただ、標準アクションだけでは、複雑な動作やプロジェクトごとの要件に対応するのは難しい場合もある。カスタムアクションを作成することで、Playmakerの可能性は大幅に広がるだろう。少しC#の知識が必要にはなるけど、Unityの開発効率が格段に向上することは間違いない。

カスタムアクションで機能拡張することで、へたに1つメソッドに複数の機能を詰め込むコード(「肥大化したメソッド」や「God メソッド」)が増えるより、シンプルな1クラス1機能を実践して可視性を上げよう。

おわりに

教本片手にC#で作り始めた時は、「あれもしなきゃ」「これも覚えなきゃ」と思うことが多かったのUnityを触るのが億劫で、モチベーションも落ちてました。Playmakerを導入したことで、もっと客観的にUnityが「ゲームを作るためのGUIツール」(厳密には違いますが)として扱えるようになりました。Unityを使う敷居がぐっと下がり、今では毎日Unityを起動するのが楽しくなっています。