| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 斯坦福UE4 + C++课程学习记录 9:蓝图-简易开关 -> 正文阅读 |
|
[游戏开发]斯坦福UE4 + C++课程学习记录 9:蓝图-简易开关 |
目录 ????????UE中的蓝图是一种基于C++的可视化编程系统,它将大量常用的底层代码接口暴露出来,方便开发者在UE中快速调用,其可视化的呈现方式让那些不专攻编程的人员(如设计、美工、策划等)也能快速上手使用。从程序开发的角度,学习蓝图可以方便开发中的很多环节;从业务的角度,掌握蓝图也有利于开发和其他环节的同事进行交流。 ????????本部分的第一个示例,是使用操纵杆开关控制宝箱的开合。 1. 前言????????课程中提到了两个有趣的点可以记录一下:1. 蓝图运行效率比C++慢,但在通常情况下蓝图的速度已经足够;2. 在UE3中,蓝图系统的名字叫“Kismet”,这个名字在相关代码接口中被一直沿用下来。另外,课程中也提到虚幻商场中的“内容示例(Content Examples)”项目,除开包含大量蓝图内容外,在光照、阴影、粒子、声效、数学等等都有大量的应用示例,是个值得下载学习的内容。 ? ? ? ? ?本节将从一个通过操纵杆控制宝箱开合的例子开始,着手学习UE中的蓝图系统。 2. 创建蓝图类? ? ? ? 创建一个基于Actor的蓝图类,命名为“LeverBP”(BP表示Blue Prints),作为示例所需的操作杆。然后打开其蓝图编辑器,利用界面左上角绿色的“添加组件”按钮为它添加两个静态网格体。通过鼠标拖拽,将一个网格体变为根组件,这个操作对应C++中的RootComponent = XXX;语句。 然后将父子网格体依次设置为底座和把手,如图9-3所示。这两个模型可通过搜索“switch”得到,其文件包含在ExampleContent文件夹里,该文件夹内容可在第0篇文章中的github链接中找到。进一步,为了后续开发方便,我们可以分别将根控件和子控件重命名为“BaseMesh”和“HandleMesh”。 ????????然后调整把手的Pitch值将它从水平变为朝上(把向上定义成操纵杆的关闭状态),并将其拖拽到世界中,为了方便观察效果就放在宝箱旁边。要是觉得悬空违和,也可以放一堵墙在后面。 ????????随后,我们开始实现开关的控制功能。实现的思路很简单,在操作杆前按下E键后将把手朝下,然后打开宝箱即可。在上节实现打开箱子这个功能时,我们通过实现SurGamePlayInterface中的Interact函数来实现宝箱打开,因此对于操纵杆这个交互我们同样需要实现这个接口。所以,接下来的操作就是把上一节课中C++代码换成了蓝图操作的版本,大家可以自行将相应步骤进行对照比较。 ????????在LeverBP的蓝图编辑器 -> 最上方的“类设置” -> “已实现的接口” -> 添加SurGamePlayInterface类,此时在界面左侧“我的蓝图”中就会出现Interact接口。右键Interact接口 -> 实现事件,就会在事件图表中创建相应的节点。 3. 改变把手角度? ? ? ? 将HandMesh拖拽进事件图表中创建节点,如图9-6从该节点中拖拽以调用Set Relative Rotation函数,从而改变把手的角度。而要改变的角度就用Make Rotator节点来设置,其值取HandleMesh的Pitch值的相反数既可以,如图9-7。 ????????在UE的蓝图系统中,白线是执行线,表示从头到尾依次执行节点;而其他的黄色、蓝色、紫色等都是数据线,表示数据的流向、函数输入输出。于是对上述节点进行连接,如图9-8所示。 ????????连接完成后编译运行,查看运行效果,发现把手已经改变角度了: ????????究其原理,是我们在绑定E键的PrimaryInteract中写了判断射线检测对象是否实现Interact的语句:if (HitActor->Implements<USurGameplayInterface>())。我们通过在蓝图中实现Interact,使得代码往下运行,并且传入了操纵杆的HitActor以调用蓝图中实现的内容(更改把手角度)。 4. 打开宝箱????????在左侧“我的蓝图” ->?变量中新建“SelectedActor”,用于存放需要打开的宝箱对象。在其右侧的细节面板中,将“变量类型”从布尔值更改为Actor(蓝色图标),然后勾选“可编辑实例”,编译保存。这样就可以点击世界中的操纵杆模型,并在其右侧的细节面板中更加方便地设置该变量,如图9-11所示。 ????????将该变量拖入事件图表中,选择获取,如图9-12: ????????回到SurGameplayInterface.h中,将void Interact(APawn* InstigatorPawn);的宏变为UFUNCTION(BlueprintCallable, BlueprintNativeEvent),保存编译,使该接口可以在蓝图中被调用。 ????????再次回到蓝图中,调用SelectedActor的Interact(消息),连线如图9-13所示。为了调整线条的弯曲程度,可在线条任意位置上双击创建节点,然后就可以通过拖拽来调整线条的弧度。编译保存运行测试: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/17 6:09:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |