ue5python批量修改材质实例的父项
import unreal
# 需要被替换材质实例列表的路径
mat_dir = "/Game/mat_test/"
# 替换的材质
use_mat_path = "Material'/Engine/ArtTools/RenderToTexture/Materials/Flipbooks/M_FlipbookLocalCoordinateTest_01.M_FlipbookLocalCoordinateTest_01'"
def main():
# 获取AssetRegistry实例
asset_registry = unreal.AssetRegistryHelpers.get_asset_registry()
# 通过地址获取所有资源文件,recursive:是否递归获取(如果还想获取路径下的文件夹里资源,需要设置为True)
asset_data = asset_registry.get_assets_by_path(mat_dir, recursive=True)
# 获取等会替换用的资源文件,get_asset:真正的获取到资源对象
use_mat_asset = asset_registry.get_asset_by_object_path(use_mat_path).get_asset()
ue_type_name = unreal.Name('MaterialInstanceConstant')
ue_filter = unreal.ARFilter(class_names=[ue_type_name])
# 过滤出材质实例
asset_data_info_list = asset_registry.run_assets_through_filter(asset_data, ue_filter)
for asset_data_info in asset_data_info_list:
asset_data = asset_data_info.get_asset()
# 修改每个材质实例的父项材质
asset_data.set_editor_property('parent', use_mat_asset)
# 资源保存,可以注释掉,确认正确后自己手动全部保存
unreal.EditorAssetLibrary.save_loaded_asset(asset_data)
if __name__ == '__main__':
main()
然后ue里直接执行py文件就可以了