UE4 Python を VSCode でリモートデバッグする
UE4 の Control Rig をポチポチ触ってると Python でツール化したい作業が増えてきますが、少しでも複雑な事をやろうとすると Python スクリプト実行時にデバッガが欲しくなるため、VSCode でリモートデバッグする方法について書いておきます。
- はじめに
- ptvsd をダウンロード
- UE4 Python を有効化
- デバッガにアタッチするスクリプトを作成
- VSCode でリモートデバッグ設定を作成
- リモートデバッグに接続する
- おわりに
- (おまけ)PyCharm でリモートデバッグ
はじめに
VSCode でリモートデバッグしたい場合は ptvsd を使用します。筆者は Python 編集環境として主に VSCode を使っているので Maya プラグイン作成時等でも ptvsd を使っています。
検証環境は Windows10 64bit / UE4.26.0 です。
UE4 Python を有効化
まずはプラグインを有効化します。
プラグインを有効化したら Developer Mode を有効にしましょう。これで [UE4 プロジェクトパス]\Intermediate\PythonStub\unreal.py が出力されるので、コード補完等で便利に使えます。
デバッガにアタッチするスクリプトを作成
[UE4 プロジェクトパス]\Content\Python 以下に attach_to_debugger.py というファイルを作成します。UE4 は初期状態で [UE4 プロジェクトパス]\Content\Python に対してパスを設定するので、ここに配置しておけば簡単に呼び出せます。
attach_to_debugger.py
# coding: utf-8 import os import sys def attach_to_debugger(host, port): try: ptvsd_path = "{}/../../ptvsd-4.3.2/src".format(os.path.dirname(__file__)) if not ptvsd_path in sys.path: sys.path.append(ptvsd_path) import ptvsd ptvsd.enable_attach(address=(host, port)) ptvsd.wait_for_attach() print("[ptvsd] debugger is attached. %s:%s" % (host, port)) except: import traceback traceback.print_exc() attach_to_debugger('127.0.0.1', 60058)
VSCode でリモートデバッグ設定を作成
デバッグタブから create a launch.json file します。ここでは VSCode の Workspace 設定ファイル (XXX.code-workspace) に追加する手順を記載します。
Workspace -> Python -> Remote Attach -> アタッチ先アドレス (127.0.0.1) を入力 -> アタッチ先ポート番号 (60058) を入力 ※ポート番号は空いていればどこでもいいです
これにより Workspace 設定ファイル に下記設定が追加されます。remoteRoot は "${workspaceFolder}" に変更して下さい。これで Python をデバッグする準備は整いました。
{ "folders": [ { "path": "." } ], "launch": { "version": "0.2.0", "configurations": [ { "name": "Python: アタッチ", "type": "python", "request": "attach", "connect": { "host": "127.0.0.1", "port": 60058 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "${workspaceFolder}" } ] } ] } }
リモートデバッグに接続する
リモートデバッグに接続するために作成した attach_to_debugger.py を UE4 から実行します。コンソールコマンドに「py attach_to_debugger.py」と入力して Enter を押して下さい。
この設定では接続を待つのでエディタが停止します。VS Code 側で F5 を押し、リモートデバッグを開始します。正常に接続できたらエディタが再開します。
試しに test.py というファイルを作成し、ブレークポイントを設定してみます。その状態でコンソールコマンドに「py test.py」と入力して実行するとブレークポイントで停止することが確認できます。