《使用 UnrealEnginPython 插件进行UE4中的Python开发》学习笔记2

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



本节课将使用 UnrealEnginePython 插件来制作红、绿、蓝三色立方体,并根据它们被 “玩家人物” 碰撞的次数来实时更新一个在 “平面” 上展示的 “饼状图” 。

2.1 绘制用于展示“饼状图”的平面

  1. 在内容浏览器中 Content 目录下单击鼠标右键,在弹出的菜单中选择 “新建文件夹”,将新建的文件夹命名为 “PlottingGraphsTutorial”,用来保存后面用到的所有资产。
    在这里插入图片描述

  2. 在内容浏览器的 ..\Content\PlottingGraphsTutorial 目录下单击鼠标右键,在弹出的菜单栏中选择 “蓝图类”(Blueprint Class),然后在 “选取父类” 对话框中选择 “Actor”,将新创建的 Actor 类命名为 “BP_Plotter”,表示这是一个用于展示“饼状图”的平面。
    在这里插入图片描述

  3. 在内容浏览器中双击 “BP_Plotter”,弹出 “BP_Plotter” 资产编辑窗口,拖拽该窗口到 “ThirdPersonMap”选项卡的右边,以便于在 “BP_Plotter” 资产编辑窗口和编辑器主界面之间快速切换。在 “BP_Plotter” 资产编辑器窗口的 “组件”(Component)面板单击“+添加”(+Add Component)按钮,在弹出的菜单中选择 “平面”(Plane),然后在右侧 “细节” 面板的 “变换”(Transform)选项卡下将此平面的 “缩放”(Scale)设置为 (10.0, 10.0, 1.0)。
    在这里插入图片描述

  4. 在 “组件”(Component)面板中拖拽 “Plane” 到 “DefaultSceneRoot” 上,使其成为根组件。单击“+添加”(+Add Component)按钮,在弹出的菜单中选择 “Python”,然后在右侧 “细节” 面板的 “Python” 选项卡下将 “Python Module” 设置为 “Plotter”,将 “Python Class” 设置为 “PlotComponent”。最后单击工具栏的“编译” 按钮,编译好以后,“编译”按钮上会显示一个绿色的“√”,这表示当前操作无误,然后单击其右边的 “保存” 按钮,保存 “BP_Plotter” Actor类。
    在这里插入图片描述

  5. 在左下方 “我的蓝图” 面板 “事件调度器”选项卡右边点击 “+” 按钮,添加 “OnGraphDataUpdated” 事件,然后再右侧 “细节” 面板的 “Inputs” 选项卡右边点击 “+” 按钮,添加 “Actor” 类型的 Input,命名为 “Platform”。最后单击工具栏的 “编译” 和 “保存” 按钮。
    在这里插入图片描述

  6. 为 “BP_Plotter” 的 “Plane” 组件添加一个简单的 “材质”。切换到 “ThirdPersonMap”选项卡,在内容浏览器的 ..\Content\PlottingGraphsTutorial 目录下单击鼠标右键,在弹出的菜单栏中选择 “材质”,将新创建的材质命名为 “M_Graph”。
    在这里插入图片描述

  7. 双击 “M_Graph”,在 “材质图表” 编辑器中的空白处单击鼠标右键,新增一个 “TextureSampleParameter2D” 节点,命名为“Graph”,然后从该节点的 “RGB” 引脚处拖拽出一条线,连接 “M_Graph材质结果节点 的 “自发光颜色”(Emissive Color)引脚。最后单击工具栏的 “保存” 按钮。
    在这里插入图片描述

  8. 在左侧 “细节” 选项卡 “材质”(Material)选项下将 “着色模型”(Shading Model)设置为 “无光照”(Unlit)。注意,这里如果没有进行设置,后面在进行测试的时候,平面上无法显示扇形图。
    在这里插入图片描述

  9. 切换到 “BP_Plotter”选项卡,在 “组件” (Components)面板双击 “Plane”组件,在右侧 “细节” 面板 “材质” 选项卡下将 “元素0” 的材质替换成 “M_Graph”。
    在这里插入图片描述


2.2 绘制红、绿、蓝三立方体

  1. 在内容浏览器的 ..\Content\PlottingGraphsTutorial 目录下单击鼠标右键,在弹出的菜单栏中选择 “蓝图类”(Blueprint Class),然后在 “选取父类” 对话框中选择 “Actor”,将新创建的 Actor 类命名为 “BP_PlotterPlatform”。双击 “BP_PlotterPlatform” 进入资产编辑器窗口,在 “组件” (Components)面板添加三个 “立方体” (Cube) ,分别命名为 “Red”、“Green”和“Blue”,然后在 “我的蓝图” 面板添加三个 “整数” 变量,分别命名为 “RedCounter”、“GreenCounter” 和 “BlueCounter”。
    在这里插入图片描述

  2. 选中 “组件” (Components)面板的 “Red”、“Green”和“Blue”,在 “细节” 面板 “碰撞”(Collision)选项卡下的 “碰撞预设值” 改为 “OverlapAll” 。分别选择 “Red”、“Green”和“Blue”,在 “变换” 选项卡下将它们的 “位置”(Location)分别改为(-200, 0, 0)、(0, 0, 0) 和 (200, 0, 0) 。
    在这里插入图片描述

  3. 为 “BP_PlotterPlatform” 的三个方块添加对于的颜色。切换到 “ThirdPersonMap”选项卡,在内容浏览器的 ..\Content\PlottingGraphsTutorial 目录下创建的 “M_Color”。
    在这里插入图片描述

  4. 双击 “M_Color”。在 “材质图表” 编辑器 “M_Color材质结果节点 的 “基础颜色” 引脚上单击鼠标右键,在弹出的菜单中选择 “提升为参数”,此时会生成一个 “基础颜色节点,将其改名为 “Color”。然后点击“保存”。
    在这里插入图片描述

  5. 在左侧 “参数” 选项卡下点击 “保存子项”,在弹出的窗口中将子项命名为 “M_Color_Red”;重复操作,再创建子项 “M_Color_Green” 和 “M_Color_Blue”。
    在这里插入图片描述
    在这里插入图片描述

  6. 双击 “M_ColorRed”。进入 “材质图表” 编辑器,在右侧 “参数 选项卡” 对调整 “RGB” 的值为 “红色”。对“M_ColorGreen” 和 “M_Color_Blue” 的操作同理。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  7. 分别为 “BP_PlotterPlatform” 的三个立方体组件设置对应的颜色材质。
    在这里插入图片描述


2.3 创建 “碰撞” 和 “饼状图” 更新事件蓝图

  1. 新建 Python 脚本 “Plotter”,将UP主在https://gitee.com/kprimo/UEPython_Tutorial/blob/master/Content/Scripts/Plotter.py# 中提供的脚本代码复制过去,代码逐行详解见视频UP主的讲解。
    在这里插入图片描述

  2. 双击内容浏览器中的 “BP_PlotterPlatform”,在 “组件”(Components)面板中选择 “Red” 组件, 然后在“细节”面板中单击 “组件结束重叠时”(On Component End Overlap)后面的 “+” 按钮,此时“事件图表”会出现一个碰撞事件节点。
    或者切换到“事件图表”面板,在“组件”(Components)面板中选择 “Red” 组件,然后单击鼠标右键,在弹出的菜单中展开 “为Red添加事件” 选项,然后再展开 “碰撞”(Collision)子选项,选择 “添加On Component End Overlap”。
    在这里插入图片描述

  3. 将左侧变量 “RedCounter” 拖拽至事件图表面板空白处,在弹出的菜单中选中 “获取RedCounter”,此时面板上会出现一个 “获取RedCounter” 节点,从该节点的输出项引脚处拖拽出一条线连接 “increment int” 节点(在弹出的菜单中搜索 “++” 可以快速找到),然后将 “添加On Component End Overlap (Red)” 事件的输出项引脚与 “++” 节点的输入项引脚相连。这样就可以实现当玩家角色碰每次到红色立方体时,碰撞次数计数变量 “RedCounter” 的值加1。
    在这里插入图片描述

  4. 对于绿色、蓝色立方体计数变量 “GreenCounter” 和 “BlueCounter” 的操作也类似。
    在这里插入图片描述

  5. 新建函数 “Notify Plotter” 用于调用 “BP_Plotter” 的 事件调度器 “OnGraphDataUpdated”。从 “Notify Plotter” 节点的输出项引脚拖拽出一条线,连接 “Get All Actors Of Class” 节点。将 “获取类的所有 Actor”(Get All Actors Of Class) 节点的 “Actor Class” 选项设置为 “BP_Plotter”,然后从该节点的 “Out Actors” 引脚处拖拽出一条线,连接 “Get (复制)" 节点。接着,从 “Get (复制)" 节点的输出项引脚拖拽出一条线,连接 “调用 On Graph Data Updated” 节点,再从 “调用 On Graph Data Updated” 节点的 “Platform” 引脚处拖拽出一条线,连接 “self” 节点。最后将 “获取类的所有 Actor”(Get All Actors Of Class) 节点的输出项与 “调用 On Graph Data Updated” 节点的输入项节点相连。
    在这里插入图片描述

  6. 实现每碰撞一次执行一次 “Notify Plotter”。分别从三个 “increment int” 节点输出项引脚拖拽出一条线,分别连接三个 “Notify Plotter” 节点,然后 “编译”、“保存”。
    在这里插入图片描述

  7. 创建 “BP_Plotter” “Plane” 组件实时更新蓝图。打开 “BP_Plotter” “Plane” 组件的 “Construct Script” 选项卡,从 “Construct Script” 节点的输出项引脚拖拽出一条线,连接 “创建动态材质实例 (Plane)”(Create Dynamic Material Instance) 节点。
    在这里插入图片描述


2.4 放置资产至场景中并进行测试

  1. 回到 “****”编辑器主界面,从内容浏览器中分别将 “BP_Plotter” 和 “BP_PlotterPlatform” 拖拽至场景中,放置在合适的位置
    在这里插入图片描述
  2. 点击工具栏的 “播放”(▶)按钮启动运行。可以看到 “BP_Plotter” 平面上能正常展示 “玩家”碰撞 “BP_PlotterPlatform” 三色方块次数比例的扇形图。
    在这里插入图片描述
    在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值