《使用Unreal Engine Python插件进行UE4中的Python开发》学习笔记1

·本文为B站系列教学视频《使用 UnrealEnginPython 插件进行UE4中的Python开发》——Day 01 初识 UnrealEnginePython的学习笔记,UP主为腾讯游戏策划、虚幻社区贡献者 世欺子



本节课对基于虚幻引擎(Unreal Engine)的 Python 集成开发插件 UnrealEnginePython 进行简要介绍,接着在虚幻引擎(Unreal Engine)5.0.3 版本中安装 UnrealEnginePython,并为插件安装 Python 第三方库 Matplotlib,最后对 Python 集成开发环境进行测试。

1.1 UnrealEnginePython 简介

Unreal Engine 中想要搭建深度学习、强化学习的开发环境,就需要使用 UEC++ 的蓝图进行转写,操作起来比较麻烦;如果能在 UE 中 直接集成并使用 Python 开发,就会比较方便。想要实现这个目标,有两种方式:

1.1.1 UnrealEnginePython 与 Python Editor Script Plugin 对比

  • Python Editor Script Plugin 仅可以通过控制台调用和运行在外部 IDE 编写的 Python 代码,并且只可以在 Editor (编辑环境)下使用Python相关代码模块,如果想要在Runtime 中也使用,则需要对其进行 dll 封装;
  • UnrealEnginePython 内嵌了一个 IDE,我们不需要离开 UE 到外部去编写 Python 代码,并且在 EditorRuntime 都可以直接使用Python相关代码模块。

1.1.2 UnrealEnginePython 的特性

摘自 UnrealEnginePythonGithub 主页 https://github.com/20tab/UnrealEnginePython

  • Unreal Engine 中(Editor & Runtime)嵌入整个 Python VM 的插件。
  • 轻松访问所有 UE 内部 API 及其反射系统,可以使用该插件编写其他插件、自动化任务以及编写单元测试和实现游戏元素。
  • 该插件会自动添加 PyActor(对应 UE 中的 Actor 类)、PyPawn(对应 UE 中的 Pawn 类)、PyCharacter (对应 UE 中的 Character 类)以便在游戏中将Python进行“温和”(非破坏性)的集成。
  • 进行二次开发。在打包项目后,也可以更改 Python 代码,可以从已经打包的游戏中构建一个全新的游戏。

请添加图片描述
(图源:《在Unreal Engine中使用Python开发引擎端流程工具-(一)学习路线篇》


1.2 开发环境配置

本人主要使用 Unreal Engine 5.0.3 Visual Studio 2022 进行学习,两者的安装和配置可以参阅 Unreal Engine 官方文档 《安装虚幻引擎》 以及 《设置Visual Studio》

1.2.1 UnrealEnginePython 的下载与安装

参阅UP主提供的开发环境配置笔记 《UE 5.0 使用 Unreal Engine Python插件进行 Runtime Python 开发》

  1. 新建“第三人称游戏”工程项目 UEPython_Tutorial,项目默认设置这里我选择 C++(也可以选择蓝图)、不含初学者内容。UnrealEnginePython 此版本要求使用C++工程来进行编译,蓝图工程则可以使用新建C++类的方式,新建任意C++类,来为项目添加C++代码。
    在这里插入图片描述

  2. 前往 https://github.com/crazytuzi/UnrealEnginePython,下载 UnrealEnginePython 源代码,该版本的 UnrealEnginePython 支持 UE 4.27.2 和 UE 5.0.3 。
    在这里插入图片描述

  3. 下载完毕后将压缩包解压,并将文件夹 UnrealEnginePython_master 重命名为 UnrealEnginePython
    在这里插入图片描述
    然后拷贝至 UEPython_Tutorial 项目文件夹下的 Plugins 目录(我没有在项目目录下看见 Plugins 目录于是就自己新建了一个
    在这里插入图片描述
    在这里插入图片描述

  4. 关闭项目 UEPython_Tutorial 并重新打开,弹出编译窗口,选择 是(Y) 来对插件进行编译。
    在这里插入图片描述

  5. UEPython_Tutorial/Config/DefaultEngine.ini中添加 Python 源,笔者使用 UE5 引擎自带的 Python 源(代码如下)

    [Python]
    Home=../../../Engine/Binaries/ThirdParty/Python3/Win64
    
    • 使用此配置就可以考虑将 Runtime 下调用的 pip 包也一并安装到引擎目录下的 Python 中。

      • Runtime 和 Editor

    • 打包项目时插件会自动将 UE5 引擎自带的 Python 源拷贝至打包后的 Engine/Binaries/文件夹下,无需自己再手动拷贝 Python 环境。

    • 此步非常关键,决定了在《使用Unreal Engine Python插件进行UE4中的Python开发》学习笔记6 打包后的项目能否正常启动在这里插入图片描述6. 查看插件是否成功安装。在 UE 窗口的 菜单栏 选择 “编辑”,然后在弹出的下拉菜单中选择 “插件”,可以看到 UnrealEnginePython_master 已经成功安装,并且 内容浏览器Content目录下面多出一个 Scripts 文件夹(存放使用 UnrealEnginePython 内置 IDE 编写的 Python 脚本)。
      在这里插入图片描述

1.2.2 使用 UnrealEnginePython 编写一个简单的 Python 脚本

  1. UE 窗口的 菜单栏 中选择 “窗口”,然后在弹出的下拉菜单中点击 Python Editor 打开内置的 IDE
    在这里插入图片描述

  2. Python Editor 窗口工具栏上点击 New 按钮新建一个 Python 脚本,此时 UE 窗口右下角会出现 “已检测到1项源内容文件的变更” 的提示消息框,可以勾选 “不再询问”,然后选择 “导入”,这样每次保存 Python 脚本时,都会实时去更新 Scripts 文件夹下的内容。
    在这里插入图片描述
    在这里插入图片描述

  3. 下面在 IDE 中写一段简单的代码进行测试:

    def HelloWorld():
    	print("Hello, World!")
    
    HelloWorld()
    

    Python Editor 窗口工具栏上点击 Save 按钮保存代码。在 UE 窗口的 菜单栏 中选择 “窗口”,然后选择 “输出日志”,可以看到 “输出日志” 窗口出现在 UE 窗口下方。
    在这里插入图片描述4. 点击 Python Editor 窗口工具栏的 Execute 按钮执行 Python 脚本,可以看到 “输出日志” 窗口打印出 “Hello, world!”。
    在这里插入图片描述

1.2.3 为 UnrealEnginePython 安装第三方模组 Matplotlib 库

  1. 打开命令提示符,安装 Numpy 库和 Matplotlib 库,输入命令行:

    C:\Users\Xavicii>d:
    D:\>cd D:\Epic Games\UE_5.0\Engine\Binaries\ThirdParty\Python3\Win64\
    D:\Epic Games\UE_5.0\Engine\Binaries\ThirdParty\Python3\Win64\>python -m pip install numpy
    D:\Epic Games\UE_5.0\Engine\Binaries\ThirdParty\Python3\Win64\>python -m pip install matplotlib
    

    注意这里的操作和教学视频中的不同:教学视频中使用的是 UE4.27 版本,并且将 Matplotlib 库直接安装在 UnrealEnginePython插件的文件夹 \Binaries\Win64 下。而本人使用的 UE5.0.3 版本,根据UP主提供的 UE 5.0 开发环境配置笔记 《UE 5.0 使用 Unreal Engine Python插件进行 Runtime Python 开发》,需要将 Matplotlib直接安装在对应引擎版本的Python文件夹下,否则在运行后面的测试代码是会出现各种报错,比如找不到 Matplotlib 库、Numpyimport 错误等等。
    在这里插入图片描述

  2. 复制 UP主提供在 http://cucvr.com/?/article/25 中的测试代码到 Python Editor,测试代码的目的是在 UE 中生成图形纹理资产,以检验 Matplotlib 能否正常装载,:

    '''在内存中生成纹理,绘制图形,将图形数据传输到纹理内存,将其另存为资产并打开相关的编辑器'''
    import unreal_engine as ue
    # EPixelFormat defines the various pixel formats for a texture/image, we will use RGBA with 8bit per channel
    from unreal_engine.enums import EPixelFormat
    import matplotlib
    # set the Agg renderer as we do not need any toolkit
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt
    # set texture/plot dimensions and dpi, ensure dpi is a float !
    width = 1024
    height = 1024
    dpi = 72.0
    # create a new figure with the specified sizes
    fig = plt.figure(1)
    fig.set_dpi(dpi)
    fig.set_figwidth(width/dpi)
    fig.set_figheight(height/dpi)
    # plot a simple graph with a label on the y axis
    plt.plot([1, 2, 3, 4])
    plt.ylabel('some numbers')
    # draw the graph (in memory)
    fig.canvas.draw()
    # create a texture in memory (will be saved later)
    texture = ue.create_transient_texture(width, height, EPixelFormat.PF_R8G8B8A8)
    # copy pixels from matplotlib canvas to the texture as RGBA
    texture.texture_set_data(fig.canvas.buffer_rgba())
    # save the texture
    texture.save_package('/Game/FirstGraphTexture')
    # open its editor
    ue.open_editor_for_asset(texture)
    
  3. 点击 Python Editor 窗口工具栏的 Execute 按钮执行 Python 脚本,可以看到“Texture2D_8”纹理图案生成并被保存到资产管理器中。
    在这里插入图片描述


  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值