# 使われていないアセットをリストするスクリプト
import unreal
path = "/Game/"
allAssets = unreal.EditorAssetLibrary.list_assets(path, True, False)
if(len(allAssets) > 0):
for asset in allAssets:
dependencies = unreal.EditorAssetLibrary.find_package_referencers_for_asset(asset, False)
if(len(dependencies) == 0):
print (asset)
アセットライブラリの中から依存関係のないアセットのみを書き出している。
他のフォルダで使われてない(リンクされていない)アセットを調べる
# 他のフォルダで使われてないアセットを調べる
import unreal
path = "/Game/"
allAssets = unreal.EditorAssetLibrary.list_assets(path, True, False)
if len(allAssets) > 0:
for asset in allAssets:
dependencies = unreal.EditorAssetLibrary.find_package_referencers_for_asset(asset, False)
flag = False
for linkedAsset in dependencies:
s0 = asset.rsplit("/", 1)[0]
s1 = linkedAsset.rsplit("/", 1)[0]
# 最後のディレクトリが一致しない場合フラグを立てる
if(s1 != s0):
flag = True
break
if(flag == False):
print(asset)
外部とのリンクのないフォルダを調べる
Megascansアセットなどで使われてないフォルダをまるごと消したい場合などに。
# 使われていないアセットをリストするスクリプト
import unreal
path = "/Game/Megascans"
allAssets = unreal.EditorAssetLibrary.list_assets(path, True, False)
# 各アセットのディレクトリを集める
listDir = []
if len(allAssets) > 0:
for asset in allAssets:
# ファイル部分を削り、ディレクトリだけの文字列にする
dirPath = asset.rsplit("/", 1)[0]
listDir.append(dirPath)
listDir = set(listDir) # 重複解消
# ディレクトリごとにアセットの依存関係を調べる
result = []
for dir in listDir:
assets = unreal.EditorAssetLibrary.list_assets(dir, True, False)
# ディレクトリ内のアセットごとの処理
# ひとつでも外部のアセットとのリンクがある場合はフラグを立てる
flag = False
for asset in assets:
dependencies = unreal.EditorAssetLibrary.find_package_referencers_for_asset(asset, False)
for linkedAsset in dependencies:
if linkedAsset.rsplit("/", 1)[0] != dir:
flag = True
break
else:
continue
break
# 外部とのリンクがないフォルダをリストに加える
if(flag == False):
result.append(dir)
# アルファベット順にソート
result.sort()
# プリントする
for dir in result:
print(dir)