レベルで選択しているアクターのアセットを再インポートする

import unreal

# レベルで選択されているアクターを取得
selectedActors = unreal.EditorLevelLibrary.get_selected_level_actors()

assetTools = unreal.AssetToolsHelpers.get_asset_tools()

for actor in selectedActors:
    # アクターがスタティックメッシュコンポーネントを持っているか確認
    staticMeshComponent = None
    for component in actor.get_components_by_class(unreal.StaticMeshComponent):
        staticMeshComponent = component
        break  # 最初のStaticMeshComponentのみ処理

    if staticMeshComponent:
        # 使用されているスタティックメッシュを取得
        static_mesh = staticMeshComponent.static_mesh

        if static_mesh:
            # スタティックメッシュのアセットを再インポート
            asset_path = unreal.Paths.get_path(static_mesh.get_path_name())
            print(f"Reimporting: {asset_path}")
            asset_fileName = static_mesh.get_editor_property('asset_import_data').get_first_filename()
            print(f"asset_fileName: {asset_fileName}")

            task = unreal.AssetImportTask()
            task.set_editor_property('filename', asset_fileName)
            task.set_editor_property('destination_path', asset_path)
            task.set_editor_property('replace_existing', True)
            task.set_editor_property('automated', True)
            assetTools.import_asset_tasks([task])
        else:
            print(f"Actor '{actor.get_name()}' に有効なスタティックメッシュがありません。")
    else:
        print(f"Actor '{actor.get_name()}' はスタティックメッシュコンポーネントを持っていません。")
タイトルとURLをコピーしました