こんにちは、株式会社Leon Gameworksの遠藤です。
今回はPythonとの連携方法について解説します。Editor UtilityとPythonの親和性は高いので、まずは本記事でPythonの使用方法やコードの書き方について学びましょう。
0:動作環境
本記事はUE5.4.2を基に執筆しており、エディターの言語は「英語」でスクリーンショットを撮影しております。
1:準備
UE5でPythonを扱うには、「Python Editor Script Plugin」が必要です。UE5.4ではデフォルトで有効になっていますが、過去バージョンにてプラグインが無効になっている場合は、有効にした後にエディタを再起動しましょう。
2:Pythonコードの実行方法
UE5ではいくつかの方法でPythonコードを実行できます。Editor Utilityとの連携方法も含めて紹介していきます。
アウトプットログから実行
[Output Log]の左下のプルダウンから[Python]に切り替えることでPythonスクリプトを実行できるようになります。
「py」コマンドでファイルのパスを指定することでスクリプトファイルを実行できます。
ツールバーから実行
ツールバーの[Tools→Execute Python Script…]からスクリプトファイルを指定して実行できます。
また、[Recent Python Scripts]から過去に実行したスクリプトを実行できます。
コマンドラインから実行
UE5をコマンドラインやスクリプトから実行する場合、[-ExecutePythonScript]引数にて実行するPythonスクリプトを指定することができます。
UnrealEditor-Cmd.exe "C:\Unreal Projects\MyProject.uproject" -ExecutePythonScript="c:\my_script.py"
起動時に実行
Project Settingsの[Python→Startup Scripts]からスクリプトを登録しておくことで、エディタ起動時に実行されるようになります。
ブループリントから実行
ブループリントのノードからも実行可能です。Editor Utilityの実行時に下のノードを実行することで、Pythonコードを実行できます。
[Execute Python Script]ではPythonコードの文字列を直で指定し、[Execute Python Command]ではスクリプトファイルを指定して実行します。
3:Pythonコードの書き方
UE5ではPython用のAPIが用意されており、コードの冒頭で下記のようにインポートすることで使用できます。
import unreal
記述例をいくつか紹介します。APIの詳細はこちらを参照してください。
プロパティの取得/設定
import unreal
obj = unreal.MediaPlayer()
# プロパティ取得
play_value = obj.get_editor_property("play_on_open")
# プロパティ設定
obj.set_editor_property("play_on_open", True)
アクタークラスを親としたブループリントの作成
import unreal
asset_name = "BP_MyActor"
package_path = "/Game/MyFolder"
factory = unreal.BlueprintFactory()
factory.set_editor_property("ParentClass", unreal.Actor)
asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
new_asset = asset_tools.create_asset(asset_name, package_path, None,
factory)
unreal.EditorAssetLibrary.save_loaded_asset(new_asset)
4:まとめ
Editor UtilityとPythonは親和性が高いので、ぜひ積極的に使っていきましょう。今後の記事でもPythonを活用したツールについて解説していきますのでお楽しみに。
株式会社Leon Gameworks
●公式サイト
www.leon-game.co.jp
●X(Twitter)
@Leon_Gameworks
トンコツ(遠藤俊太)
●トンコツ開発ブログ
shuntaendo.hatenablog.com
●X(Twitter)
@tonkotsu3656
TEXT_トンコツ(Leon Gameworks)
EDIT_小村仁美 / Hitomi Komura(CGWORLD)、オムライス駆