1.0 Pythonとは

  1. インタプリタ型言語で主に、AI開発や自動化などに使用されることが多いです。
  2. UnrealPythonでは、UEの提供するPythonAPIでC++言語で提供されている機能を利用可能です。
  3. ※ エディター内で効率的に作業出来るようにするものであり、実際にゲームにPythonを組み込むことは非推奨です

1.1 Pythonを使用する為の事前準備

  1. UnrealでPythonを使用する為にはプラグインを有効にする必要があります
  2. 「Editor Scripting Utilities」と「Python Editor Script Plugin」を有効にします
  3. ※ プラグイン内に「Python v3.9.7」が入っており、別のバージョンや別のPythonを使用したい場合はビルドなどが必要です
  4.  編集 > プラグイン > Scripting > Python Editor Script Plugin
    編集 > プラグイン > Scripting > Python Editor Script Plugin 編集

1.2 UEでのPythonの使い方

  1. エディター内から実行
  2. エディター内から実行する場合は「下部ツールバー」などのコマンド入力欄から実行します。
  3. Python: 複数行のコードを実行出来ます
    Python(REPL): 一行のみの実行しか出来ません
    1. 下記のようにコマンド入力モードを「Python」にします
    2.  下部ツールバー > Python
      下部ツールバー > Python 下部ツールバー
    3. 入力モードをPythonにした状態で、プリント文を入力してみましょう
    4. print('Hello!')
    5. Enterで実行すると「アウトプットログ」に実行した結果が表示されます
    6. 下部ツールバー > Python 下部ツールバー
  4. BPから実行
  5. BPから実行する場合は「EditorUtilityWidget」というBPクラスを使用します
    1. 下記のように「EditorUtilityWidget」のBPを作成します
    2.  下部ツールバー > Python
      下部ツールバー > Python 下部ツールバー
    3. BPを作成して「ExecutePythonScriptノード」を出し、グラフに移動して下記のように組みます
    4. EditorUtilityWidgetを右クリックして「RunEditorUtilityWidget」を実行します
    5.  下部ツールバー > Python
      下部ツールバー > Python 下部ツールバー
    6. 実行すると「アウトプットログ」に「LogPython: Hello World!」と表示されます
  6. ファイルから実行
  7. ファイルから実行する場合は「下部ツールバー」などのコマンド入力欄から実行します。
    1. コマンド入力モードを「Cmd」にします
    2. コマンド入力欄に下記を入力します
    3. py ファイル名
    4. Enterで実行すると、実行したファイルに書かれている内容が実行されます
  8. コマンドから実行(エディターを立ち上げない場合、立ち上げる場合)
  9. コマンドから実行する場合はBatファイルなどを使用します
    1. エディターを立ち上げてPythonを実行
    2. UnrealEditor-Cmd.exe プロジェクトファイルパス -ExecutePythonScript=Pythonファイルパス
    3. エディターを立ち上げないでPythonを実行
    4. UnrealEditor-Cmd.exe プロジェクトファイルパス -run=pythonscript -script=Pythonファイルパス

1.3 PythonPathを追加する

  1. PythonPathはDefaultで下記は認識していますが、それ以外のパスを入力したい場合の説明です
    1. Content/Python/ (エンジン)
    2. Content/Python/ (プロジェクト)
    3. Content/Python/ (プラグイン)
    4. Documents/UnrealEngine/Python/ (Windowsの場合)
  2. 上記以外の場所にパスを通す場合は、プロジェクト設定の「Python - AdditionalParh」で追加します
  3.  編集 > プロジェクト設定 > Plugin > Python > AdditionalParh
    編集 > プロジェクト設定 > Plugin > Python > AdditionalParh 編集

1.4 Pythonを実際に使ってみよう

  1. 実際に使用する前にUnrealが提供するPythonAPIは下記になります
  2. import unreal
  3. ポイントライトをスポーンする
  4. オブジェクトのスポーンは「spawn_actor_from_object」で行います
  5. また、unrealが用意している型があれば、その型を使用することが好ましいですが使用しなくても利用は可能です
  6. Unreal型はエンジン環境において最高のパフォーマンスを発揮するように最適化されています
  7. import unreal
    spawn_object = unreal.PointLight()
    location = unreal.Vector()
    location.x = 0
    location.y = 0
    location.z = 100
    rotation = unreal.Rotator()
    spawn_actor = unreal.EditorLevelLibrary.spawn_actor_from_object(spawn_object, location, rotation)
  8. Unreal型を使用しない場合

  9. 選択しているポイントライトのintensity値を取得、入力する
  10. 値の取得は「get_editor_property()」、値の設定は「set_editor_property()」で行います
  11. get_editor_property()を使用しなくても値の取得は出来ますが、get_editor_property()でしかアクセス出来ない変数も存在します。
  12. set_editor_property()を使用しなくても値は設定出来ますが、変数変更時のバックグラウンド処理や同期などが走りません
  13. ※ UIからと同じ操作をさせたい場合には「set_editor_property()」を使用しないといけません
  14. ※ 変数変更時のバックグラウンド処理や同期を走らせたくない場合は、直接設定する必要があります
  15. import unreal
    
    
    select_actor = unreal.EditorLevelLibrary.get_selected_level_actors()
    for actor in select_actor:
        light_component = actor.get_editor_property('point_light_component')
        intensity = light_component.get_editor_property('intensity')
        print('Intensity: %i' % intensity)
        light_component.set_editor_property('intensity', 99999.0)

Ex 起動時にPythonを実行させる

  1. 下記の設定を行うことで、Editor起動時に任意のPythonファイルを実行させることが出来ます
  2. 上記以外の場所にパスを通す場合は、プロジェクト設定の「Python - Startup Scripts」で追加します
  3.  編集 > プロジェクト設定 > Plugin > Python > Startup Scripts
    編集 > プロジェクト設定 > Plugin > Python > Startup Scripts 編集

引用・参考資料