ソースファイルのないアセットをリストアップする
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!")
スタティックメッシュからアセットの場所を取得し、そこからソースファイルのアドレスを取得します。