前言
最近在虚幻商城看到一个简单而好用的免费小插件 Restart Editor
经过之前的进阶菜单折腾之后,我觉得 Python 实现也不难。
所以我就用 Python 来进行扩展了。
Python 脚本重启引擎
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| """ 自动重启引擎 """
from __future__ import division from __future__ import print_function from __future__ import absolute_import
__author__ = 'timmyliang' __email__ = '820472580@qq.com' __date__ = '2020-09-18 15:53:10'
import sys import subprocess import unreal from UE_Util import error_log, toast
editor_util = unreal.EditorLoadingAndSavingUtils() sys_lib = unreal.SystemLibrary() paths = unreal.Paths()
@error_log def main(): check = editor_util.save_dirty_packages_with_dialog(True,True) if not check: toast(u"保存失败") return
uproject = paths.get_project_file_path() editor = sys.executable subprocess.Popen([editor,uproject,'-skipcompile'],shell=True) sys_lib.quit_editor()
if __name__ == "__main__": main()
|
重启引擎之前先判断是否有资源需要进行报错操作,如果保存失败则跳过重启步骤
然后获取引擎路径,这里通过 sys.executable 可以获取到 UE4Editor.exe
继而通过 subprocess 外调命令行启动一个新的虚幻。
接着就是退出当前虚幻。
其实脚本并不复杂,我也看了 C++ 插件的调用方式。
C++ API 里面直接就有一个 restart 相关的函数,调用就完事了~
配置
结合之前弄好的菜单扩展,可以通过配置 json 文件实现 C++ 插件的位置配置。
唯一比较遗憾的是 Python 无法添加自定义的图标。
虽然有 ToolMenuEntry 类里面有 setIcon 的 API ,但是 Python 暂时还无法扩充自定义的 style_set_name
所以图标只能设置现有的引擎 style_set_name