Chapter 03無料公開

【UE×Python】Pythonでレベル上のアクターデータを名前で取得する方法(Unreal Engine 5.1)

Yuni-Book
Yuni-Book
2024.05.20に更新
このチャプターの目次

内容

「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'>

    #============================================

###############################################################################