UE4 python scrpit——导入资产

UE4 python scrpit——导入资产


链接: Unreal Python API.

思路

1.直接在API搜索自己想干嘛,然后查看合适的方法
在这里插入图片描述
2.点进看中的方法,描述合适,然后开始研究怎么用
在这里插入图片描述

这个方法需要的参数,是Array(AssetImportTask)类型的,继续点进去看看这个类型是怎么来的。

AssetImportTask里面直接一堆参数,Base是unreal.object——unreal._object,那就直接进到unreal._object
在这里插入图片描述
unreal._object中有个set_editor_property,所以我们可以直接用set_editor_property来设置AssetImportTask里面的参数,再返回给我们搜到的方法:import_asset_tasks(import_tasks)就可以了。
在这里插入图片描述

写代码

刚开始写这种脚本,从下往上写是不错的方法。
按照我们思路来,先写最直接的方法,然后填空就可以了

import unreal

# 因为import_asset_tasks需要的参数是数组Array
# 所以我们先把import_tasks设成list
import_tasks = []
unreal.AssetTools.import_asset_tasks(import_tasks)

然后我们需要一个类型是AssetImportTask的对象,放到列表里面

# 实例化
file = unreal.AssetImportTask()
# 按照属性描述,设置属性
file.set_editor_property("automated",True)# 是否避免弹框对话
file.set_editor_property("destination_name","ABC")# 资产重命名,若空字符串则为文件原名
file.set_editor_property("destination_path","/Game/texture/")# 资产存放路径,支持新建文件夹(比如Game里面没有texture的,它会帮你建一个名为texture的文件夹)
file.set_editor_property("filename",asset_path)# 从哪里导入文件
file.set_editor_property("replace_existing",True)# 是否覆盖现在资产
file.set_editor_property("replace_existing_settings",True)# 覆盖时是否替换现在设置
file.set_editor_property("save",True)# 导入后是否保存

# 最后把对象添加到我们的列表里面
import_tasks.append(file)

设置属性的时候我们发现了,有个属性竟然需要我们的文件路径(废话),那么赶紧把文件路径给它吧!

asset_path = "C:\Users\dzj\Desktop\Game\asadafh.TGA"

最后我们把代码返回来,编译一下:

LogPython: Error: TypeError: descriptor 'import_asset_tasks' requires a 'AssetTools' object but received a 'list'

得到一个错误,‘import_asset_tasks’需要的是’AssetTools’ object

但我们的AssetTool不是一个object,所以我们直接搜索AssetTool,看谁能返回一个Base是Object的AssetTool给我们。
在这里插入图片描述
此时就只有这个helpers能进我们眼了,进去看看,确实符合要求
在这里插入图片描述
所以我们要把最后一句代码改一改

unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks(import_tasks)

再执行,成功导入。
在这里插入图片描述

完整代码

import unreal

# 因为import_asset_tasks需要的参数是数组Array
# 所以我们先把import_tasks设成list
import_tasks = []
asset_path = "C:\\Users\\dzj\\Desktop\\Game\\asadafh.TGA"

file = unreal.AssetImportTask()
# 按照属性描述,设置属性
file.set_editor_property("automated",True)# 是否避免弹框对话
file.set_editor_property("destination_name","ABC")# 资产重命名,若空字符串则为文件原名
file.set_editor_property("destination_path","/Game/texture/")# 资产存放路径,支持新建文件夹(比如Game里面没有texture的,它会帮你建一个名为texture的文件夹)
file.set_editor_property("filename",asset_path)# 从哪里导入文件
file.set_editor_property("replace_existing",True)# 是否覆盖现在资产
file.set_editor_property("replace_existing_settings",True)# 覆盖时是否替换现在设置
file.set_editor_property("save",True)# 导入后是否保存

# 最后把对象添加到我们的列表里面
import_tasks.append(file)
unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks(import_tasks)

需要批量的话,只要在asset_path上整个for循环就可以了

猜你喜欢

转载自blog.csdn.net/weixin_43912248/article/details/121794493