アセットのソースファイル

ソースファイルのないアセットをリストアップする

import unreal
import re
import os
 
path = "/Game/"
allAssets = unreal.EditorAssetLibrary.list_assets(path, True, False)
 
if(len(allAssets) > 0):
    for asset in allAssets:
        assetData = unreal.EditorAssetLibrary.find_asset_data(asset)
        className = assetData.get_asset().get_class().get_name()
 
        if className == 'Texture2D' or className == 'StaticMesh':
            filePath = assetData.get_asset().get_editor_property('asset_import_data').get_first_filename()
            filePath = re.sub("/", "\\\\", filePath)
            if not os.path.exists(filePath):
                print(asset)

コンテントブラウザで選択したアセットからソースファイルのフォルダを開く

選択アセット(複数)のソースファイルのあるフォルダを開きます。ない場合はアセット名をプリントします。

import unreal
import re
import subprocess
import os
 
utilityBase = unreal.GlobalEditorUtilityBase.get_default_object()
AssetList = utilityBase.get_selected_assets()
 
if len(AssetList)>0:
    for asset in AssetList:
        name = asset.get_name()
        className = asset.get_class().get_name()
        if className == 'Texture2D' or className == 'StaticMesh':
            filePath = asset.get_editor_property('asset_import_data').get_first_filename()
            print (filePath)
            filePath = re.sub("/", "\\\\", filePath)
            print (filePath)
 
            if os.path.exists(filePath):
                subprocess.Popen(r'explorer /select,%s' % filePath)
            else:
                print('Source file not exists: ' + name)

アセットブラウザーで適当なテクスチャーまたはメッシュを選択した状態で実行します。

選択したアクターからソースファイルのフォルダを開く

選択したアクターからソースファイルのあるフォルダを開きます。

import unreal
import re
import os
import subprocess
 
selectedActors = unreal.EditorLevelLibrary.get_selected_level_actors()
 
if len(selectedActors) > 0:
    mesh = selectedActors[0].get_component_by_class(unreal.StaticMeshComponent)
 
    if mesh != None:
        path = mesh.static_mesh.get_path_name()
        asset = unreal.EditorAssetLibrary.find_asset_data(path).get_asset()
 
        filePath = asset.get_editor_property('asset_import_data').get_first_filename()
        filePath = re.sub('/', '\\\\', filePath)
 
        if os.path.exists(filePath):
            subprocess.Popen(r'explorer /select,%s' % filePath)
        else:
            print('Source file not exists')
else:
    print ("No Actor Selected!")

スタティックメッシュからアセットの場所を取得し、そこからソースファイルのアドレスを取得します。

タイトルとURLをコピーしました