获取ue的全局编辑器对象,通过该对象可以获取编辑器中的资产:
@unreal.uclass()
class GLEdit(unreal.GlobalEditorUtilityBase):
def __init__(self):
super(GLEdit,self).__init__()
gl_editor=GLEdit()
加载使用Qt Designer生成的.ui文件:
将ui文件放在项目文件夹下,方便加载,再对信号和槽进行连接
ui_path=unreal.Paths.project_content_dir()
ui_path=ui_path+"Python/ue.ui"
if unreal.Paths.file_exists(ui_path):
uic.loadUi(ui_path,self)
else:
return
self.btn.clicked.connect(self.Btn)
获取选中的资产:
select_assets=gl_editor.get_selected_assets()
加载资产:
unreal.load_asset(str(select_assets[i].get_fname),select_assets[i].static_class())
获取被引用资产:
options=unreal.AssetRegistryDependencyOptions(True,True,False,False,False)
asset_list=unreal.AssetRegistryHelpers.get_asset_registry().get_referencers(package_path,options)
判断资产是否是某个类型的资产:
if select_assets[i].static_class()==unreal.StaticMesh.static_class():
获取静态网格体资产的材质槽:
smc=unreal.StaticMeshComponent()
smc.set_static_mesh(static_mesh)//static_mesh为静态网格体资产
asset_materialID=unreal.StaticMeshComponent.get_material_slot_names(smc)
打开资产对应的编辑器:
unreal.AssetToolsHelpers.get_asset_tools().open_editor_for_assets(obj)
将自定义ui的父窗口设置在ue窗口上:
unreal.parent_external_window_to_slate(int(myapp.winId()))