こんにちは、株式会社Leon Gameworksの遠藤です。

今回はPythonとの連携方法について解説します。Editor UtilityとPythonの親和性は高いので、まずは本記事でPythonの使用方法やコードの書き方について学びましょう。

記事の目次

    0:動作環境

    本記事はUE5.4.2を基に執筆しており、エディターの言語は「英語」でスクリーンショットを撮影しております。

    1:準備

    UE5でPythonを扱うには、「Python Editor Script Plugin」が必要です。UE5.4ではデフォルトで有効になっていますが、過去バージョンにてプラグインが無効になっている場合は、有効にした後にエディタを再起動しましょう。

    「Python Editor Script Plugin」の有効化

    2:Pythonコードの実行方法

    UE5ではいくつかの方法でPythonコードを実行できます。Editor Utilityとの連携方法も含めて紹介していきます。

    アウトプットログから実行

    [Output Log]の左下のプルダウンから[Python]に切り替えることでPythonスクリプトを実行できるようになります。

    ▲ [Output Log]のモード切り替え

    「py」コマンドでファイルのパスを指定することでスクリプトファイルを実行できます。

    ▲ 「py」コマンドでの実行

    ツールバーから実行

    ツールバーの[Tools→Execute Python Script…]からスクリプトファイルを指定して実行できます。

    ▲[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]ではスクリプトファイルを指定して実行します。

    ▲ Python関連のノード

    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)、オムライス駆