使われていないアセットを調べる

# 使われていないアセットをリストするスクリプト
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)

unreal.EditorAssetLibraryクラス

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