執筆バージョン: Unreal Engine 4.20.3
|
こんにちは、エンジニアです。
今回は、UE4でPythonを使用できる面白そうな「Python Editor Script Plugin」をご紹介します!
Python Editor Script Pluginとは!
BluetilityのようなエディタのスクリプティングでPythonを使用できるようにするプラグインです。
※記事執筆バージョン、UE4.20.3でのPythonのバージョンは2.7となっております。
※このプラグインはまだベータで実験的な機能となっておりますので開発で使う場合はお気を付けください。また、あくまでエディタのスクリプティングを行うためのプラグインになっています。実際のゲーム開発をPythonで行うためのプラグインではございません。
主な特徴としては、
1.Pythonを使用する
2.C++からBlueprintに公開されている機能をほぼ使用できる
3.エディタ起動時に自動的に実行できる
4.コマンドライン上からエディタを起動しなくても実行できる
が挙げられます。
やはり、一番の注目ポイントはPythonで記述ができることです。BluetilityはBlueprintなためUE4の機能しか使用できませんが、Pythonでは他APIを使用することで得意なデータ解析や自動化がうまく活用できるかもしれません。もしかしたら、今流行りのディープラーニングで何か面白いことができるかもしれないですね。また、コマンドライン上からスクリプトを実行できるのもJenkinsでの自動化に使いやすく個人的にポイントが高いです。
導入方法
〇プラグインを有効化
エディタの「編集」→「Plugins」を開きます。左のメニューから「Scripting」を選択し、「Editor Scripting Utilities」と「Python Editor Script Plugin」のEnableにチェックを入れるだけでOKです。このプラグインにはすでにPythonが入っているため、別でPythonをインストールする必要はありません。

〇APIについて
PythonでUnrealAPIを使用するにはAPIをインポートしてあげる必要があります。
また、APIのドキュメントはコチラです。
Unreal Python API Documentation
〇パスについて
エディタがデフォルトで認識しているパスは以下の4つになります。
・プロジェクトのContent/Python/
・エンジンのContent/Python/
・プラグインのContent/Python/
・Windows上のDocuments/UnrealEngine/Python/
です。追加でパスを追加したい場合は、「編集」→「プロジェクト設定」から左のメニューの「プラグイン」→「Python」の「Additional Paths」に追加しましょう。

使用方法
〇エディタ上からスクリプトを実行する
アウトプットログの左下のCmdと表示されている場所からプルダウンでPythonが選択できるようになっています。Pythonに切り替えるとスクリプトが入力できるようになります。
試しに、「unreal.log(“Hello World :D”)」 と入力してみましょう。アウトプットログにログが表示されます。

Pythonのファイル「.py」を実行する場合は、「py “D:\MyProject\MyPython.py”」でpyファイルを実行できます。
〇コマンドライン上からスクリプトを実行する
コマンドラインでスクリプトを実行する方法は2種類存在します。
1.エディタを起動して、スクリプトを実行する
この場合、エディタが起動しデフォルト設定されているマップも開き準備が整った後に実行されます。
|
UE4Editor-Cmd.exe MyProject.uproject -ExecutePythonScript = "D:\MyProject\MyPython.py" |
2.エディタを起動せずにスクリプトだけ実行する
エディタを起動しないためとても高速に実行されます。しかし、マップ上にアクターをスポーンさせたり、アセットを読み込むなどスクリプトによっては正常に動作しない場合がありますので注意が必要です。
|
UE4Editor-Cmd.exe -run = pythonscript -script = "D:\MyProject\MyPython.py" |
〇エディタが起動したタイミングでスクリプトを自動的に実行させる
実行させる方法は2種類存在します。どちらもエディタが起動しデフォルト設定されているマップも開き準備が整った後に実行されます。
1.init_unreal.pyを使用する
前述した「パスについて」で紹介したパス以下に「init_unreal.py」が存在した場合、自動的に「init_unreal.py」が実行されます。
例:/Content/Python/init_unreal.py
2.Startup Scriptsを設定する
「編集」→「プロジェクト設定」から左のメニューの「プラグイン」→「Python」の「Startup Scripts」にpyファイルを追加します。

最後に
お疲れさまでした。一通りざっと紹介しました。導入手順も難しくなく、APIも簡単に使えそうです。正直自分も実際の開発でどう運用すればいいのかまだわかっていませんが、今までできるけどめんどくさかったことが簡単にできるようになる気がします。色々考えてみたいと思います。
また、エディタのスクリプティングを行うには3種類ありますが、簡単にエディタ内で実装したいならBluetility、がっつりエディタ拡張を行いたいならC++、Bluetilityだと難しかったりPythonのAPIを使いたかったらPythonって感じでしょうか。
英語ですが公式ドキュメントはコチラになります。
Scripting the Editor using Python