Announcement

Collapse
No announcement yet.

Python to Open / Save assets using Editor

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

    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?

    Able Ability System - A high performance, robust ability system for UE4. Now Available!

    #2
    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?
    Have An Awesome And Productive Day
    Alex, Youtube Tutorials

    Comment


      #3
      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.
      Able Ability System - A high performance, robust ability system for UE4. Now Available!

      Comment

      Working...
      X