UE4エディタでpythonを使って参照しているアセットをコピーする
6309 ワード
UE4で拡張のPakを作るためにあるアセットが参照しているアセットを全て取ってきたかったのでpythonスクリプトでやってみました。
アセットを選択しておいて[File] > [Execute Python Script]実行でスクリプトで指定したフォルダに参照しているアセットを全てコピーします。
スクリプトではまだ未対応ですが可能であれば参照の置き換えもしたいです。
※ UE4.26.2を利用しています。
※ Python Editor Script PluginとEditorScritpting Utilities Pluginの有効化が必要です。
import unreal
from copy import copy
# 引数のアセットの依存するアセットをすべて取得
def get_list_dependencies(asset_data):
asset_package_name = asset_data.get_editor_property('package_name')
option = unreal.AssetRegistryDependencyOptions()
dependencies = unreal.AssetRegistryHelpers.get_asset_registry().get_dependencies(asset_package_name, option)
list = set()
if dependencies:
for dependency in dependencies:
try:
dependency_asset = unreal.EditorAssetLibrary.find_asset_data(dependency)
except:
continue
list.add(unreal.StringLibrary.conv_name_to_string(dependency))
dep_list = get_list_dependencies(dependency_asset)
for dep in dep_list:
list.add(unreal.StringLibrary.conv_name_to_string(dep))
return list
# 選択されているアセットを取得
utility_base = unreal.GlobalEditorUtilityBase.get_default_object()
asset_list = unreal.EditorUtilityLibrary.get_selected_asset_data()
# 選択されていなければ終了
if len(asset_list) <= 0:
exit()
# とりあえず1つだけ処理
target = asset_list[0]
# 依存するアセットと選択されたアセットを取得
sources = get_list_dependencies(target)
target_package_name = target.get_editor_property('package_name')
sources.add(unreal.StringLibrary.conv_name_to_string(target_package_name))
print(sources)
# 取得したアセットを特定のフォルダにフラットにコピー
for source in sources:
unreal.EditorAssetLibrary.duplicate_asset(source, "/Content/Test/" + source.split("/")[-1])
Author And Source
この問題について(UE4エディタでpythonを使って参照しているアセットをコピーする), 我々は、より多くの情報をここで見つけました https://qiita.com/mechamogera/items/87e2d52d9bf800c04c34著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .