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

这篇具有很好参考价值的文章主要介绍了《使用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 开发,就会比较方便。想要实现这个目标,有两种方式:

  • 一种是使用 UE 官方自带的 Python编辑器脚本插件Python Editor Script Plugin),官方文档为《使用Python脚本化运行虚幻编辑器》;
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python
  • 另一种就是使用本系列教学视频中的 UnrealEnginePython 插件,Github 主页 https://github.com/20tab/UnrealEnginePython。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,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 代码,可以从已经打包的游戏中构建一个全新的游戏。

ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,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++代码。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python

  2. 前往 https://github.com/crazytuzi/UnrealEnginePython,下载 UnrealEnginePython 源代码,该版本的 UnrealEnginePython 支持 UE 4.27.2 和 UE 5.0.3 。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python

  3. 下载完毕后将压缩包解压,并将文件夹 UnrealEnginePython_master 重命名为 UnrealEnginePython
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python
    然后拷贝至 UEPython_Tutorial 项目文件夹下的 Plugins 目录(我没有在项目目录下看见 Plugins 目录于是就自己新建了一个
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python

  4. 关闭项目 UEPython_Tutorial 并重新打开,弹出编译窗口,选择 是(Y) 来对插件进行编译。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python

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

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

      • Runtime 和 Editor

        • 具体的流程架构,需要分离好Editor和Runtime Data,Editor依赖于Runtime Data,但Runtime Data不能依赖于Editor。 —— 《基于行为树的MOBA技能系统:技能系统与可视化节点技能编辑器》
        • Runtime:任何编译目标都会加载该模块;Editor:只在编辑器下加载该模块;LoadingPhase:描述什么时候加载该模块,这个比较重要,依赖其他模块的模块应该在依赖模块之后加载,不然就会报错找不到对应模块。——《虚幻引擎编译系统总结》
        • 《EHostType::Type》
        • Editor、Development、Runtime的区别:Edit和Development是并行关系都依赖RunTime文件可以用RunTime文件下的库,但是Edit和 Development不能用Runtime下的库,Runtime与发布后的Game相关。——《UE4初学问题》
    • 打包项目时插件会自动将 UE5 引擎自带的 Python 源拷贝至打包后的 Engine/Binaries/文件夹下,无需自己再手动拷贝 Python 环境。

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

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

  1. UE 窗口的 菜单栏 中选择 “窗口”,然后在弹出的下拉菜单中点击 Python Editor 打开内置的 IDE
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python

  2. Python Editor 窗口工具栏上点击 New 按钮新建一个 Python 脚本,此时 UE 窗口右下角会出现 “已检测到1项源内容文件的变更” 的提示消息框,可以勾选 “不再询问”,然后选择 “导入”,这样每次保存 Python 脚本时,都会实时去更新 Scripts 文件夹下的内容。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python

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

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

    Python Editor 窗口工具栏上点击 Save 按钮保存代码。在 UE 窗口的 菜单栏 中选择 “窗口”,然后选择 “输出日志”,可以看到 “输出日志” 窗口出现在 UE 窗口下方。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python4. 点击 Python Editor 窗口工具栏的 Execute 按钮执行 Python 脚本,可以看到 “输出日志” 窗口打印出 “Hello, world!”。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python

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 错误等等。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python

  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”纹理图案生成并被保存到资产管理器中。
    ue4 python,# 《使用UnrealEnginePython..》学习笔记,ue5,python文章来源地址https://www.toymoban.com/news/detail-847689.html


到了这里,关于《使用Unreal Engine Python插件进行UE4中的Python开发》学习笔记1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4(Unreal Engine 4)运行setup.bat发生403报错的问题

    最近UE官方在迁移服务器,有些D:UE4EngineBuildCommit.gitdeps.xml文件需要更新。此时需要你去往UE对应的版本下载新的Commit.gitdeps.xml文件,并且覆盖原有的Commit.gitdeps.xml文件。UE的官方说明 覆盖前 覆盖后

    2024年02月11日
    浏览(29)
  • 【UE4闪退解决办法】D3D设备丢失,Unreal Engine is exiting due to D3D device being lost

    百度那些被小编到处传的,一般来说都没啥用的。我后来在贴吧老哥的楼里才翻出一个别样的解决方法。 打开英伟达的这个驱动软件,GeForce Experience  进去后,在“驱动程序”里面,点3个点打开列表,选择“studio驱动程序” 然后就是选择自定义安装(不要快速!),之后弹

    2024年02月13日
    浏览(108)
  • C语言与游戏引擎插件开发:Unity、Unreal Engine中C插件的编写与集成(四)

    目录 一、C插件开发最佳实践与常见问题解析 性能优化: 跨平台兼容性: 版本管理与升级: 二、结论 C语言在游戏引擎插件开发中的关键作用与优势: 对开发者提出建议: 性能优化: 内存管理: 智能指针 :利用UE的 TSharedPtr 、 TWeakPtr 等智能指针管理动态内存,确保资源释

    2024年04月27日
    浏览(34)
  • C语言与游戏引擎插件开发:Unity、Unreal Engine中C插件的编写与集成(一)

    目录 一、引言 C语言在游戏开发中的重要地位与优势 游戏引擎插件机制与C语言的价值 二、C语言基础与游戏开发特性 C语言核心特性及其在游戏开发中的应用 游戏引擎API对接关键概念与技巧 C语言在游戏开发领域占据着无可替代的重要地位,尤其在应对高性能计算需求与底层

    2024年04月29日
    浏览(52)
  • Unreal Engine(UE5)中构建离线地图服务

    1.     首先需要用到3个软件,Unreal Engine,gis office 和 bigemap离线服务器 Unreal Engine下载地址:点击前往下载页面 Gis office下载地址:点击前往下载页面 Bigemap离线服务器 下载地址: 点击前往下载页面 Unreal Engine用于数字孪生项目开发,gis office是一款地理信息软件,可用于获取

    2024年01月18日
    浏览(31)
  • UE(Unreal Engine,虚幻引擎)和Unity的区别与联系

    一、基本概念 游戏制作软件中最著名的两个游戏引擎是UE和Unity,二者有各自的特点和适用场景。 UE是指Unreal Engine(虚幻引擎)的简称,它是由Epic Games(Epic游戏公司)开发的一款高度先进的游戏开发工具。UE是一种3D图形渲染引擎,为开发者提供了一系列强大的功能,使他们

    2024年04月13日
    浏览(29)
  • 【UE 插件】UE4 虚幻引擎 插件开发(带源码插件打包、无源码插件打包) 有这一篇文章就够了!!!

    🙋‍♂️ 作者:海码007 📜 专栏:UE虚幻引擎专栏 💥 标题:【UE 插件】UE4 虚幻引擎 插件开发(带源码插件打包、无源码插件打包) 有这一篇文章就够了!!! ❣️ 寄语:将来的自己肯定会感谢现在努力的你! 🎈 最后: 文章作者技术和水平有限,如果文中出现错误,希

    2024年02月08日
    浏览(39)
  • 开源虚拟现实引擎。CARLA是一个基于Unreal Engine 4开发的游戏引擎,支持模拟各种汽车、摩托车、轨道交通信号等车辆的行驶行为,并且提供了一套API接口,供开发者进行调用,用来进行地图构建

    作者:禅与计算机程序设计艺术 目前,市面上存在多个智能汽车解决方案,包括滴滴、理想汽车、百度无人驾驶等,均由大型科技公司或各个公司开发,其中一些公司如理想汽车、百度、字节跳动等已经取得了较为丰硕的成果。随着技术的发展,人们越来越关注智能汽车在未

    2024年02月08日
    浏览(37)
  • Unreal Engine中的Actor:理解、生成与消亡

    目录 谈谈Actor 生成(实例化)Acotr StaticClass/UClass:类模板/类的快照 Actor的生命周期 Actor的消亡 Destroy:标记删除 SetLifeSpan:设置存活时间 Destroyed:消亡Actor的通知 EndPlay:消亡时回调 删除(消亡)类型介绍 凡是能拖进场景编辑器中的,都是actor UE的场景可以理解为一个世界,

    2024年02月05日
    浏览(36)
  • [引擎开发] 杂谈ue4中的Vulkan

            接触Vulkan大概也有大半年,概述一下自己这段时间了解到的东西。本文实际上是杂谈性质而非综述性质,带有严重的主观认知,因此并没有那么严谨。         使用Vulkan会带来什么呢?简单来说就是对底层更好的控制。这意味着我们能够有更多的手段去提升绘制的效

    2024年01月17日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包