找回密码
 立即注册
查看: 615|回复: 0

Unreal Python 引擎重启脚本

[复制链接]
发表于 2021-3-12 12:42 | 显示全部楼层 |阅读模式
本文章转载自 智伤帝的个人博客 - 原文链接

前言

  最近在虚幻商城看到一个简单而好用的免费小插件 Restart Editor
  经过之前的进阶菜单折腾之后,我觉得 Python 实现也不难。
  所以我就用 Python 来进行扩展了。
Python 脚本重启引擎

# -*- coding: utf-8 -*-
"""
自动重启引擎
"""

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():
    # NOTE 保存对象
    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
   
    # NOTE 启动当前引擎
    subprocess.Popen([editor,uproject,'-skipcompile'],shell=True)
   
    # NOTE 退出引擎
    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
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-23 20:44 , Processed in 0.155558 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表