内容
「Unreal Engine」上で、「Python」を使用してレベル上のアクターデータを名前で取得する方法
自作関数
### Get Actor Data by Name
def unrealGetActorDataByName(input_actor_name: str) -> unreal.Actor:
actor_data_list = unreal.EditorActorSubsystem().get_all_level_actors()
actor_data_list = [actor_data for actor_data in actor_data_list if actor_data.get_name()==input_actor_name]
actor_data = actor_data_list[0] if actor_data_list else None
return actor_data
# Input:
# input_actor_name="Floor"
# Output:
# <Object '/Game/LV_Basic.LV_Basic:PersistentLevel.Floor' (0x00000801D05F0500) Class 'StaticMeshActor'>
### Print Actor Data
def unrealPrintActor(input_actor_data: [unreal.StaticMeshActor, unreal.SkeletalMeshActor]):
print(f"Actor: {input_actor_data} {type(input_actor_data)}")
# Input:
# input_actor_data = <Object '/Game/LV_Basic.LV_Basic:PersistentLevel.Floor' (0x00000801D05F0500) Class 'StaticMeshActor'>
# Output:
# LogPython: Actor:
# <Object '/Game/LV_Basic.LV_Basic:PersistentLevel.Floor' (0x00000801D05F0500) Class 'StaticMeshActor'>
# <class 'StaticMeshActor'>
サンプルプログラム
### Public Library ############################################################
### https://docs.unrealengine.com/5.1/en-US/PythonAPI/#
import unreal
### Function ##################################################################
### Get Actor Data by Name
def unrealGetActorDataByName(input_actor_name: str) -> unreal.Actor:
actor_data_list = unreal.EditorActorSubsystem().get_all_level_actors()
actor_data_list = [actor_data for actor_data in actor_data_list if actor_data.get_name()==input_actor_name]
actor_data = actor_data_list[0] if actor_data_list else None
return actor_data
# Input:
# input_actor_name="Floor"
# Output:
# <Object '/Game/LV_Basic.LV_Basic:PersistentLevel.Floor' (0x00000801D05F0500) Class 'StaticMeshActor'>
### Print Actor Data
def unrealPrintActor(input_actor_data: [unreal.StaticMeshActor, unreal.SkeletalMeshActor]):
print(f"Actor: {input_actor_data} {type(input_actor_data)}")
# Input:
# input_actor_data = <Object '/Game/LV_Basic.LV_Basic:PersistentLevel.Floor' (0x00000801D05F0500) Class 'StaticMeshActor'>
# Output:
# LogPython: Actor:
# <Object '/Game/LV_Basic.LV_Basic:PersistentLevel.Floor' (0x00000801D05F0500) Class 'StaticMeshActor'>
# <class 'StaticMeshActor'>
### Main ######################################################################
if __name__ == '__main__':
#============================================
### Setup Data
level_name = "PersistentLevel" ### Level
actor_name = "Floor" ### Actor >> ID Name
actor_label = "Floor" ### Actor >> Item Label
#============================================
### Get Data
actor_data = unrealGetActorDataByName(actor_name)
#============================================
### Print Data
unrealPrintActor(actor_data)
# LogPython: Actor:
# <Object '/Game/LV_Basic.LV_Basic:PersistentLevel.Floor' (0x00000801D05F0500) Class 'StaticMeshActor'>
# <class 'StaticMeshActor'>
#============================================
###############################################################################