簡単なイベントスクリプトを記述することで、アプリケーション上でその内容に沿った動作を実行します。
※アプリケーションのチュートリアルの実装や、アプリケーションのテスト等で使用することを想定しています。
- Input系の命令
- int型、float型、string型の変数の使用
- 四則演算、条件分岐、ジャンプ命令などプログラムチックな操作
例えば、ボタンを1秒間タッチして放す場合は、下記のように記述します。
::: Button1を1秒間押す
touch begin 0 "Button1"
wait sec 1.0
touch ended 0条件分岐やジャンプ命令を使えば複雑な事も可能です。
::: Button1を0.1秒間隔で100回連打する
int i 0
# LOOP1
touch begin 0 "Button1"
wait sec 0.1
touch ended 0
add i i 1
ifls i 100 goto LOOP1イベントスクリプトに関してはWiki上で詳細に説明していますので、こちらをご確認下さい。
- Unity2019.4.22f1
- Pixel4 XL
- UnityEditorとUnityPlayer(実機)の両方で実行出来ます。
- 既存のEvent SystemオブジェクトとEvent System Botオブジェクトを差し替える必要があります。
- 具体的な手順は下記の通りです。
- 本リポジトリを使用したいUnityProjectのAsset以下に配置します。
- Scene上に、Event System Botを配置します。元々Scene上にあるEventSystemは無効化して下さい。
  
- [イベントスクリプト]を作成します。イベントスクリプトの記述情報に関しては、こちらをご確認下さい。また、プレイ中の入力を記録し、イベントスクリプトに書き出すことも可能です。
- イベントスクリプトをEvent System Bot->Event Script System->Scriptsに登録します。
  
- プログラム中にInputを使用している箇所はInput2に置き換えて下さい。
 example
var horizontal = Input.GetAxsisRow("Horizontal");using Utj.UnityBotKun;
...
var horizontal = Input2.GetAxsisRow("Horizontal");Unity EditorをPlay Modeで実行し、任意のタイミングでEvent Script SystemのPlayボタンを押します。

UnityBotKun Remote Clientを使ってApplicationをUnityEditorからリモートで制御し、イベントスクリプトの実行、記録を行います。UnityBotKun RemoteClientはWindow->UnityBotKun->RemoteClientで起動します。
アプリケーションをビルドする際にDevelopmentBuildを有効にしてビルドを行って下さい。
ここでは、Event System Bot にAddされているコンポーネントを説明します。
Event System BotはEventSystem,StandaloneInputModuleOverrider,ScriptBot,InputBot,InputRecorder,DontDestory等の複数のコンポーネントで構成されています。
入力、レイキャスト、イベント送信を処理します。
特に変更はありませんので、詳細に関してはスクリプトリファレンスをご確認下さい。
Axisやボタンの名称を変更する場合はこちらで設定を行います。
詳細に関しては、スクリプトリファレンスをご確認下さい。
イベントスクリプトの制御を行います。
- Script
 実行するイベントスクリプトのテーブルです。- Size
 登録するイベントスクリプトの個数を指定します。
- Element
 イベントスクリプトを登録します。
 
- Size
- isAutoPlay
 有効な場合、実行直後にPlayScriptで指定されているイベントスクリプトを実行します。
- Play Scipt
 実行する、イベントスクリプトを選択します。
- Play
 イベントスクリプトを実行します。実行する為には、アプリケーションが実行中(Application.isPlay == true)である必要があります。
- Stop
 実行中のイベントスクリプトを停止します。
- PC
 イベントスクリプトの実行位置(行)を表示します。
InputをHackするコンポーネントです。
- Is Override Input
 有効な場合、InputをHackします。イベントスクリプトが実行中は常に有効となります。
- Is Enable Touch Simulation
 有効な場合、MouseをTouchとしてシュミレーションします。この時、Mouseは無効となります。
- Input Infomation
 Inputの情報を表示します。デバック用の機能です。
実行中のアプリケーションのInputを記録して、イベントスクリプトを生成する為のコンポーネントです。
- Axis Names
 イベントスクリプトに記録する軸の名称です。イベントスクリプトに記録する、軸の名前を変更したい場合、こちらを変更して下さい。
- Button Names
 イベントスクリプトに記録するボタンの名称です。イベントスクリプトに記録する、ボタンの名前を変更したい場合、こちらを変更して下さい。
- Wait Type
 イベントスクリプトに記録するwaitコマンドをframe/secから指定します。
- IsEnable Position To GameObject
 Touchイベントが発生した場合、可能であれば、Touchイベントを座標からGameObject名に変換します。
- IsCompression
 イベントスクリプトを可能な限り圧縮します。この設定が無効な場合、axisやMouseの情報が毎フレーム記録されます。この設定が有効な場合、axisやMouseの情報は変化があったフレームのみ記録されますが、精度が若干落ちます。
- Is Record Button
 ボタンの情報を記録するか否かを指定します。
- Is Record Axis Raw
 AxisRawの情報を記録するか否かを指定します。
- Is Record Mouse
 Mouseの情報を記録するか否かを指定します。
- Is Record Touch
 Touchの情報を記録するか否かを指定します。
- Script
 記録中のイベントスクリプトの内容を表示します。
- Record
 イベントスクリプトの記録を開始します。イベントスクリプトを記録する為にはアプリケーションが実行中(Application.isPlaying)である必要があります。
- Stop
 イベントスクリプトの記録を停止します。
- Save
 記録したイベントスクリプトをTextAssetとして保存します。
Sceneを跨いでEvent System Botを使用する為のコンポーネントです。
- Is Dont Destroy On Load
Scene切り替え時のEvent System Botを破棄したくない場合は有効にする必要があります。
実機上で動作させる場合にUnityPlayer<->UnityEditor間の動作を行う為のコンポーネントです。
UnityPlayer(実機)上のEvent System BotをUnityEditorから制御する為のWindowです。
① Refleshボタン。Player上のUnityBotKunの情報を取得します。
② イベントスクリプト実行ボタン。④で指定されたイベントスクリプトを実行/停止を行います。
③ 録画ボタン。Player上で発生したInput情報の記録/停止を行います。記録内容は停止時にEditor上でTextAssetとして保存します。
④ イベントスクリプト選択リスト。Player上で実行するイベントを選択します。
⑤ イベントスクリプトオブジェクトフィールド。Player上に転送するイベントスクリプト。
⑥ 追加ボタン。⑤で指定したイベントスクリプトをPlayerへ転送します。
イベントスクリプトでは、Touch,Mouse,Button,AxisRawを制御する為の命令に加えて、変数、四則演算、条件分岐、ジャンプ等のプログラマブルな記述を行うことが出来ます。
ゲーム業界でスクリプターの経験がある人には親しみやすい記述方式になっていると思います。
詳しくは、イベントスクリプトリファレンスをご確認下さい。
- 
Q 
 New Input Systemに対応していますか?
- 
A 
 対応していません。
- 
Q InputRecorderで作成したイベントスクリプトを再生しても、全く同じ結果になりません。
- 
A InpurRecorderはInputのみを記録しています。処理落ちや乱数など、結果に対して様々な要員がある為、同じ結果にならない場合があります。
- 
Q 
 イベントスクリプトを実行しても、Inputが反映されません。
- 
A 
 他のEvent Systemが有効になっている可能性があります。実行時にEvent System Bot以外のEvent SystemがScene上に存在しないか確認してみて下さい。また、Standalone Iput Module OverrideのForce Module Activeを有効にすることで改善する可能性があります。
- 
Q uGUIにはタッチやマウスのクリックが反応しますが、3D等他のオブジェクトに反応しません。
- 
A Event Systemを利用している為、MonoBehaviour.OnMouseXXX系のイベントは発生しません。IPointerEnterHandlerを継承する等してイベントをキャッチして下さい。また、CameraオブジェクトにPhysicsRaycasterやPhysics2DRaycasterをAddすることもお忘れなく。







