【UE×Python】ブループリントクラスアセットを作成する方法(スタティックメッシュアセット)について徹底解説

Python

「unreal」(Unreal Engine Python API)は、Unreal EngineのPythonライブラリです。このAPIを使用することで、Unreal Engineをより簡単にカスタマイズすることができます。Pythonは、様々なプログラミング言語で使用される汎用的なスクリプト言語であり、「unreal」はPythonを使用して構築されています。本記事では、「unreal」を用いたブループリントクラスアセットを作成する方法(スタティックメッシュアセット)を紹介します。

下記の様な内容で悩んでいる/困っている場合に使える方法を参考までにご共有させて頂きます。

・Unreal Engine上で、どの様にPythonを使うの?
・Unreal Engine上のPythonで、どの様にブループリントクラスアセットを作成するの?

また、「unreal」を使用する上で基礎的な情報は下記の記事で紹介しております。
他の「unreal」のクラスや関数について気になる方はこちらの記事をご覧ください。

ブループリントアセットの作成(スタティックメッシュアセット)

unreal.BlueprintFactory関数の基本構文

unreal.BlueprintFactory()
→ BlueprintFactory

unreal.BlueprintFactory.set_editor_property関数の基本構文

unreal.BlueprintFactory().set_editor_property("parent_class", type(Class))
→ None

unreal.AssetToolsHelpers.get_asset_tools().create_asset関数の基本構文

unreal.AssetToolsHelpers.get_asset_tools()
→ AssetTools
unreal.AssetTools.create_asset(
	asset_name: str, 
	package_path: str, 
	asset_class: type(Class), 
	factory: Factory, 
	calling_context: Name='None'
) 
→ Object

unreal.get_engine_subsystem(unreal.SubobjectDataSubsystem).k2_gather_subobject_data_for_blueprint関数の基本構文

unreal.get_engine_subsystem(
	subsystem: Union[Class, type[_EngineSubsystemTypeVar]]
)
→ Optional[_EngineSubsystemTypeVar]
unreal.SubobjectDataSubsystem.k2_gather_subobject_data_for_blueprint(
	context: Blueprint
) 
→ unreal.Array[SubobjectDataHandle]

unreal.get_engine_subsystem(unreal.SubobjectDataSubsystem).add_new_subobject関数の基本構文

unreal.get_engine_subsystem(
	subsystem: Union[Class, type[_EngineSubsystemTypeVar]]
)
→ Optional[_EngineSubsystemTypeVar]
unreal.SubobjectDataSubsystem.add_new_subobject(
	params: AddNewSubobjectParams
) 
-> (SubobjectDataHandle, fail_reason=Text)

unreal.SubobjectDataBlueprintFunctionLibrary.get_data関数の基本構文

unreal.SubobjectDataBlueprintFunctionLibrary.get_data(
	data_handle: SubobjectDataHandle
) 
→ SubobjectData

unreal.SubobjectDataBlueprintFunctionLibrary.get_object関数の基本構文

unreal.SubobjectDataBlueprintFunctionLibrary.get_object(
	data: SubobjectData, 
	even_if_pending_kill: bool=False
)
→ Object

上記関数の使い方

import unreal

sm_asset = unreal.load_asset('/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube')

factory = unreal.BlueprintFactory()
factory.set_editor_property("parent_class", unreal.Actor)

asset_tools = unreal.AssetToolsHelpers.get_asset_tools()
bp_asset = asset_tools.create_asset(f"BP_{sm_asset.get_fname()}", f"/Game/MyFolder/Blueprints", None, factory)

subsystem = unreal.get_engine_subsystem(unreal.SubobjectDataSubsystem)
handle = subsystem.k2_gather_subobject_data_for_blueprint(bp_asset)[1]

sub_handle, fail_reason = subsystem.add_new_subobject(
                            unreal.AddNewSubobjectParams(
                                parent_handle=handle,
                                new_class=unreal.StaticMeshComponent,
                                blueprint_context=bp_asset
                                )
                            )

subobjectDataBPFL   = unreal.SubobjectDataBlueprintFunctionLibrary
subobjectData       = subobjectDataBPFL.get_data(sub_handle)
subobject           = subobjectDataBPFL.get_object(subobjectData)

subobject.set_editor_property("static_mesh",sm_asset)

まとめ

「unreal」(Unreal Engine Python API)は、Pythonを使ったUnreal Engineの開発に非常に役立ちます。この記事では、ブループリントクラスアセットを作成する方法(スタティックメッシュアセット)を紹介しました。ぜひ活用してみてください。

関連検索ワード

How to create a blueprint class asset from static mesh asset?
How to convert a static mesh asset to blueprint class asset?

関連キーワード

unreal, python, create, blueprint, asset, static mesh, 作成, ブループリント, アセット, スタティックメッシュ