Announcement

Collapse
No announcement yet.

Python to Open / Save assets using Editor

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • started a topic Python to Open / Save assets using Editor

    Python to Open / Save assets using Editor

    Hey all,

    I noticed the unreal.AssetTools has an open_editor_for_assets, but I'm unsure of how to force a save through the editor for those open assets (I generally run some object clean-up logic in my editors during asset save). Has anyone come across this?


  • replied
    Originally posted by AlexQuevillon View Post
    Good morning!

    I have some videos that might help with this.
    Sadly, I had to use a little bit of C++ to close the assets and get the opened assets list, but the saving part is all in Python

    How to Open and Close Assets
    Code:
    # unreal.AssetToolsHelpers
    # https://api.unrealengine.com/INT/PythonAPI/class/AssetToolsHelpers.html
    # unreal.AssetTools
    # https://api.unrealengine.com/INT/PythonAPI/class/AssetTools.html
    def openAssets():
    assets = [unreal.load_asset('/Game/Textures/TX_LightSpotMove'),
    unreal.load_asset('/Game/SkeletalMeshes/TutorialTPP_Mat'),
    unreal.load_asset('/Game/Sounds/S_CompileSuccess')]
    unreal.AssetToolsHelpers.get_asset_tools().open_editor_for_assets(assets)
    Code:
    // PublicDependencyModuleNames -> "UnrealEd"
    #include "Editor/UnrealEd/Public/Toolkits/AssetEditorManager.h"
    void UCppLib::CloseEditorForAssets(TArray<UObject*> Assets) {
    FAssetEditorManager& AssetEditorManager = FAssetEditorManager::Get();
    for (UObject* Asset : Assets) {
    AssetEditorManager.CloseAllEditorsForAsset(Asset);
    }
    }

    How To Save Assets
    Code:
    # unreal.EditorAssetLibrary
    # https://api.unrealengine.com/INT/PythonAPI/class/EditorAssetLibrary.html
    def saveAsset():
    unreal.EditorAssetLibrary.save_asset('/Game/Textures/TX_LightSpotMove', only_if_is_dirty=False)
    Let me know if it is what you are looking for
    Also, if you don't mind, you got me interrested. What kind of clean-up you are doing?
    Thanks Alex, I'll give that a try.

    I have some editor only fields that I then read and optimize to a more performant runtime bitfield / whatever implementation on Save. Just simple stuff like that.

    Leave a comment:


  • replied
    Good morning!

    I have some videos that might help with this.
    Sadly, I had to use a little bit of C++ to close the assets and get the opened assets list, but the saving part is all in Python

    How to Open and Close Assets
    Code:
    # unreal.AssetToolsHelpers
    # https://api.unrealengine.com/INT/PythonAPI/class/AssetToolsHelpers.html
    # unreal.AssetTools
    # https://api.unrealengine.com/INT/PythonAPI/class/AssetTools.html
    def openAssets():
        assets = [unreal.load_asset('/Game/Textures/TX_LightSpotMove'),
                  unreal.load_asset('/Game/SkeletalMeshes/TutorialTPP_Mat'),
                  unreal.load_asset('/Game/Sounds/S_CompileSuccess')]
        unreal.AssetToolsHelpers.get_asset_tools().open_editor_for_assets(assets)
    Code:
    // PublicDependencyModuleNames -> "UnrealEd"
    #include "Editor/UnrealEd/Public/Toolkits/AssetEditorManager.h"
    void UCppLib::CloseEditorForAssets(TArray<UObject*> Assets) {
        FAssetEditorManager& AssetEditorManager = FAssetEditorManager::Get();
        for (UObject* Asset : Assets) {
            AssetEditorManager.CloseAllEditorsForAsset(Asset);
        }
    }

    How To Save Assets
    Code:
    # unreal.EditorAssetLibrary
    # https://api.unrealengine.com/INT/PythonAPI/class/EditorAssetLibrary.html
    def saveAsset():
        unreal.EditorAssetLibrary.save_asset('/Game/Textures/TX_LightSpotMove', only_if_is_dirty=False)
    Let me know if it is what you are looking for
    Also, if you don't mind, you got me interrested. What kind of clean-up you are doing?

    Leave a comment:

Working...
X