Unreal Engine 5ではじめる! 3DCGゲームワールド制作入門
UE5でPythonを活用するには、まず「Python Editor Script Plugin」を有効にする必要があります。このプラグインは、UE5.4以降ではデフォルトで有効になっていますが、それ以前のバージョンを使用している場合は手動で有効にする必要があります。
プラグインの有効化手順:
• エディタ上部の「Edit」メニューから「Plugins」を選択
• 検索バーに「Python」と入力
• 「Python Editor Script Plugin」を見つけ、チェックボックスをオンにする
• エディタを再起動して変更を適用
プラグインを有効にしたら、Pythonスクリプトを実行する準備が整います。UE5では、Pythonスクリプトを実行するための複数の方法が用意されています。
1. コマンドラインからの実行:
UE5のコマンドラインから直接Pythonスクリプトを実行できます。これは、バッチ処理や自動化タスクに特に有用です。
UnrealEditor-Cmd.exe "C:\Projects\MyProject.uproject" -ExecutePythonScript="C:\Scripts\my_script.py"
2. エディタ内での実行:
UE5のエディタ内からPythonスクリプトを実行する方法もあります。「Tools」メニューから「Execute Python Script」を選択し、実行したいスクリプトファイルを指定します。
3. Output Logからの実行:
Output Logウィンドウの左下にあるドロップダウンメニューから「Python」を選択すると、直接Pythonコマンドを入力して実行できます。
4. 起動時の自動実行:
Project Settingsの「Python」セクションにある「Startup Scripts」に登録しておくと、エディタ起動時に自動的にスクリプトが実行されます。
Pythonを使用する際の注意点として、UE5のPython環境は独自のものであり、システムにインストールされているPythonとは別物であることを理解しておく必要があります。UE5のPython環境には、UnrealEngine用の特別なモジュールやAPIが含まれています。
UE5のPython APIについての詳細な情報は以下のリンクで確認できます。
このリンクでは、UE5でのPythonスクリプティングの基本から応用まで、詳細な解説が提供されています。
UE5でPythonスクリプトを実行する方法とコツ
UE5でPythonスクリプトを効果的に実行するには、いくつかのコツがあります。
1. モジュールのインポート:
UE5のPython環境では、UnrealEngineの機能にアクセスするための特別なモジュールが用意されています。主要なモジュールには以下のようなものがあります:
• unreal:UE5の主要な機能にアクセスするためのモジュール
• unrealEditor:エディタ固有の機能を操作するためのモジュール
これらのモジュールを適切にインポートすることで、UE5の機能をPythonから操作できるようになります。
python
import unreal
import unrealEditor
2. アセットの操作:
UE5のアセットをPythonから操作する際は、アセットレジストリを使用します。これにより、プロジェクト内のアセットを検索、作成、変更することができます。
python
assetregistry = unreal.AssetRegistryHelpers.getasset_registry()
assets = assetregistry.getassetsbypath('/Game/MyFolder', recursive=True)
for asset in assets
print(asset.asset_name)
3. エディタユーティリティウィジェットとの連携:
エディタユーティリティウィジェット(EUW)は、UE5のエディタ内でカスタムUIを作成するための強力なツールです。PythonスクリプトをEUWと組み合わせることで、視覚的に魅力的で使いやすいツールを作成できます。
python
import unreal
def createbutton()
button = unreal.Button()
button.seteditorproperty('content', unreal.Text('Click Me!'))
button.onclicked.addcallable(onbutton_clicked)
return button
def onbuttonclicked()
unreal.log('Button clicked!')
widget = unreal.geteditorsubsystem(unreal.EditorUtilitySubsystem).geteditorutilitywidgetfromblueprint('/Game/MyEUW')
widget.addchildtocanvas(create_button())
4. 非同期処理の活用:
UE5の環境では、長時間実行される処理や重い処理を非同期で実行することが推奨されます。これにより、エディタのレスポンシブ性を維持しながら、複雑な処理を行うことができます。
python
import unreal
@unreal.uclass()
class MyAsyncTask(unreal.AsyncTask)
@unreal.ufunction(override=True)
def DoWork(self)
# 重い処理をここに記述
for i in range(1000000)
pass
unreal.log('Heavy task completed!')
task = MyAsyncTask()
task.startasynctask()
5. エラーハンドリング:
Pythonスクリプトの実行中にエラーが発生した場合、適切にハンドリングすることが重要です。try-except文を使用して、エラーをキャッチし、ユーザーにフィードバックを提供しましょう。
python
try
# 危険な操作
result = someriskyoperation()
except Exception as e
unreal.log_error(f'エラーが発生しました: {str(e)}')
else
unreal.log(f'操作が成功しました: {result}')
UE5でのPythonスクリプト実行に関する詳細な情報は、以下のリンクで確認できます。
このリンクでは、UE5でのPythonスクリプティングの新機能や改善点について詳しく解説されています。
UE5のブループリントとPythonの連携テクニック
UE5では、ブループリントとPythonを組み合わせることで、より強力で柔軟なツールを作成できます。この連携により、ビジュアルプログラミングの直感性とPythonの高度な機能を両立させることができます。
1. Python関数のブループリントへの公開:
Pythonで定義した関数をブループリントから呼び出せるようにするには、`@unreal.ufunction()`デコレータを使用します。
python
import unreal
@unreal.ufunction(blueprintcallable=True, category="MyPythonFunctions")
def mypython_function(param1: int, param2: str) -> str
return f"Result: {param1} - {param2}"
この関数は、ブループリント内で「MyPythonFunctions」カテゴリに表示され、呼び出すことができます。
2. ブループリントイベントのPythonでの処理:
ブループリントで発生したイベントをPythonで処理することも可能です。これには、`unreal.PythonCallable`クラスを使用します。
python
import unreal
def onactorbeginoverlap(self, otheractor)
unreal.log(f"Overlap detected with {otheractor.getname()}")
callable = unreal.PythonCallable()
callable.setcallable(onactorbeginoverlap)
actor.bind_event('OnActorBeginOverlap', callable)
3. Pythonスクリプトのブループリントノードからの実行:
ブループリント内からPythonスクリプトを直接実行するノードも用意されています。「Execute Python Script」ノードを使用することで、ブループリントの流れの中でPythonスクリプトを実行できます。
4. データの受け渡し:
ブループリントとPython間でデータを受け渡す際は、UE5のデータ型を使用します。例えば、`unreal.Vector`や`unreal.Rotator`などのUE5固有の型を使うことで、スムーズなデータ交換が可能になります。
python
import unreal
@unreal.ufunction(blueprintcallable=True)
def setactorlocation(actor: unreal.Actor, newlocation: unreal.Vector)
actor.setactorlocation(new_location, False, False)
5. エディタユーティリティウィジェットとの連携:
エディタユーティリティウィジェット(EUW)を使用すると、Pythonスクリプトとブループリントロジックを組み合わせた高度なエディタツールを作成できます。EUWのイベントグラフでPythonスクリプトを呼び出し、結果をUIに反映させることが可能です。
python
import unreal
@unreal.ufunction(blueprintcallable=True)
def updatewidgettext(widget: unreal.EditorUtilityWidget, newtext: str)
textblock = widget.getwidgetfromname('MyTextBlock')
if textblock
textblock.settext(newtext)
このような連携テクニックを活用することで、UE5の機能を最大限に引き出すことができます。ブループリントの視覚的な分かりやすさとPythonの柔軟性を組み合わせることで、効率的で保守性の高いツールを開発することが可能になります。
ブループリントとPythonの連携に関する詳細な情報は、以下のリンクで確認できます。
このリンクでは、UE5.1でのブループリントとPythonの連携機能の改善点について詳しく解説されています。
UE5のPythonを使った自動化ツールの作り方
UE5のPythonを活用して自動化ツールを作成することで、開発プロセスを大幅に効率化できます。以下に、いくつかの実用的な自動化ツールの例と、その実装方法を紹介します。
1. アセット一括処理ツール:
プロジェクト内の特定タイプのアセットを一括で処理するツールを作成できます。例えば、すべてのテクスチャの圧縮設定を変更するツールなどが考えられます。
python
import unreal
def processtextures()
assetregistry = unreal.AssetRegistryHelpers.getassetregistry()
textures = assetregistry.getassetsbyclass('Texture2D')
for texture in textures
texture_asset = unreal.EditorAssetLibrary.load_asset(texture.get_full_name())
if texture_asset
texture_asset.compression_settings = unreal.TextureCompressionSettings.TC_DEFAULT
unreal.EditorAssetLibrary.save_loaded_asset(texture_asset)
unreal.log('All textures processed successfully.')
process_textures()
2. レベル最適化ツール:
レベル内のアクターを分析し、パフォーマンス最適化のための提案を行うツールを作成できます。
python
import unreal
def analyzelevel()
editorlevellib = unreal.EditorLevelLibrary()
actors = editorlevellib.getalllevelactors()
high_poly_actors = []
for actor in actors
if isinstance(actor, unreal.StaticMeshActor)
static_mesh = actor.static_mesh_component.static_mesh
if static_mesh
triangle_count = static_mesh.get
Unreal Engineの解説書が高ぇー!
というあなた向けに、2,550円引きでゲットする方法です。
この本だと、通常3,520円なので、2,550円引きの970円でゲットできます。
ざっくり言うと、DMMブックスのクーポンと特典を併用します。
実は、DMMブックスは利用者を増やすために初回90%オフ(最大2,000円引き)のクーポンを配布中。初回利用者限定で使えます。
加えて、DMMプレミアムという動画サブスクの無料お試しで、特典として550ポイント(550円相当)がゲットできる。
クーポンと特典合わせて2,550円引きで専門書などが割引になるというわけ。もちろん、2,550円以下の本ならタダでもらえることになります。
詳しくはこちらの記事にまとめました。