UE学习篇ContentExample解读------Blueprint_Communication-上

文章目录

  • 总览描述
  • 批次阅览
    • 1.1 Basic communication with a target blueprint
    • 1.2 Basic communication via actor casting
    • 1.3 Blueprint communication via actor casting to child Blueprint
    • 1.4 Communicating with all actors of a specific class
  • 概念总结
    • 致谢:

总览描述

在这里插入图片描述

打开关卡后,引入眼帘的就是针对关卡的总体性文字描述,这里翻译一下:

​ 这个地图提供蓝图之间通信的各种方式的案例!主要包括:通过Cast直接通信、使用事件分发器、通过蓝图接口

批次阅览

1.1 Basic communication with a target blueprint

通过一个目标蓝图通信 在这里插入图片描述

此示例具有一个按钮蓝图,它通过自定义事件来触发一个灯蓝图的开关。播放时靠近按钮从而激活它。

关键概念:

  • Custom Event
  • Time Line
  • Material Instance

蓝图分析:

整体上基本包括两个蓝图:按钮蓝图和灯光蓝图,咱们分别看一下

按钮蓝图

  • Actor的Component结构
    在这里插入图片描述

​ 它就是一个根组件带了两个组件,一个静态网格体组件,一个触发盒子组件。

  • 构造函数
    在这里插入图片描述

​ 创建一个材质实例,提升为变量,用它设置了静态网格体的材质。

  • 事件图表
    在这里插入图片描述

​ 主要的逻辑就是重写了触发盒子的重叠事件,设置了材质实例的State参数,大概率是用于设置按钮的不同颜色,有一个TargetLight的Actor对象引用,分别调用开灯和关灯!

那么,这个TargetLight的Actor引用,怎么来的呢?其实就是设为Public变量,然后在关卡给它指定为灯光蓝图,咱们确认一下:

在这里插入图片描述

​ 小眼睛是打开的,没有问题。咱们进入关卡看看

在这里插入图片描述

点击上面右侧的箭头后,确实也定位到了场景的灯光蓝图,如下所示:

在这里插入图片描述

灯光蓝图

  • Actor的Component结构
    在这里插入图片描述

    我们看到,它就是:静态网格体组件作为根组件,下面挂了一个点光源子组件

  • 构造脚本
    在这里插入图片描述

​ 它基本上就是创建两个材质实例,提升为变量,设置给了灯的静态网格体组件!

  • 事件图表
    在这里插入图片描述

    基本上就是创建了一个Custom Event自定义事件,有一个输入bool变量。它为true的时候,它通过TimeLine时间轴,是的灯光缓缓的亮灯;它为false的时候,设置灯光颜色为黑色,我们进UpdateLightColor函数,简单瞅一眼!

    在这里插入图片描述

    基本上就是两块逻辑:1、设置材质实例的EmissiveColor参数值 2、设置点光源组件的灯光颜色和强度

    这里简单解释一下:

    1、材质实例就是材质的一个实例。通过在材质中添加参数输入,就可以在它的材质实例进行动态设置修改这个参数,达到动态、灵活的目的!

    2、时间轴节点就是一个特殊的节点,它允许用户在其中创建关键一段时间的参数的关键帧,从而实现平滑的过渡,上述就是通过设置颜色的Alpha通道,从而调整灯光颜色的缓慢过渡!

1.2 Basic communication via actor casting

通过actor的cast转换通信

在这里插入图片描述

​ 翻译:在这个例子中,一个灯泡蓝图通过连接一个电池来触发开与关。灯泡使用一个重叠事件来检测电池蓝图的接触,并相应的设置开/关。

关键概念:

  • Cast
  • Lerp

蓝图分析:

图中显示主要包括3个Actor,按钮蓝图、灯泡蓝图、电池蓝图,咱们分别看一下:

(1)按钮蓝图

  • 组件结构
    在这里插入图片描述

    跟上节一样,根组件挂两个组件:StaticMeshComponent和Trigger collision

  • 构造脚本
    在这里插入图片描述

    同上节,不解释,创建一个材质实例,并提升为变量

  • 事件图表
    在这里插入图片描述

    这个也和上节差不多,触发盒子重叠的逻辑有点不一样,它除了设置材质的State参数值,这边它设置了一个电池蓝图引用的Move Up/Down函数,控制电池的上下!进入关卡蓝图确认一下:

    在这里插入图片描述

    确实是这个样子的,直接引用了电池的蓝图!

(2)电池蓝图

在这里插入图片描述

  • 组件结构
    根组件挂了一个电池的静态网格体组件,然后它又带了一个立方体的触发盒子

  • 构造脚本

在这里插入图片描述

设置了静态网格体组件的模型

  • 事件图表

    在这里插入图片描述

    它自定义了一个Move up/down的事件,它通过时间轴和插值结点设置了静态网格体组件Battery的位置和旋转,不难猜测,其实就是控制电池的上下移动!

    Lerp(Vector) 结点是向量的插值结点,通过定义Alpha(一般是0-1),从而获取一个向量A-向量B之间的一个过渡值。

    Alpha为0时,结果为A;Alpha为1时,结果为B;Alpha:0-1时,结果就是A*(1-Aplha)+ B * Aplha。

(3)灯泡蓝图
在这里插入图片描述

  • 组件结构

    根组件为静态网格体组件,它有两个子组件:触发盒子组件、点光源组件

  • 构造脚本

    在这里插入图片描述

    也是类似,创建两个材质实例并提升变量

  • 事件图表

    在这里插入图片描述

    主要有好几个逻辑,一个一个看:

    首先是初始化:

    在这里插入图片描述

    主要逻辑就是:通过获取触发盒子的所有重叠Actor,依次遍历,通过Cast强制转换结点判断,是不是电池,如果是电池蓝图和自己重叠了,就获取电池的电量值加到本身自己的电量供给的变量,然后根据电量供给是否>=0,决定灯泡触发开关。

    然后是触发盒子重叠事件:
    在这里插入图片描述

    主要逻辑就是:通过Cast强制转换结点判断,是不是电池,如果是电池蓝图和自己重叠了,就获取电池的电量值加到本身自己的电量供给的变量,然后根据电量供给是否>=0,决定灯泡触发开关。

    最后是Toggle On/Off 的自定义事件:
    在这里插入图片描述

    逻辑和之前的前面类似,主要就是通过变量Electicity Suppled的变量值进行调整灯光颜色的Alpha值,从而更改灯光的颜色!

1.3 Blueprint communication via actor casting to child Blueprint

通过actor的cast转换为子蓝图通信

在这里插入图片描述

翻译一下: 这些灯泡蓝图通过连接不同类型的电池进行开关。每一种电池都是从同一个父类蓝图派生,但是有不同的电量值来影响灯泡的亮度。

关键概念:

  • Child Blueprint Class
  • derived

蓝图分析:

本次的图中,我们看到3个按钮蓝图,三个电池蓝图,三个灯泡。其中3个按钮、3个灯泡都同上节一样的,咱们不多赘述!重点关注电池蓝图同上节的区别。

关卡中选中任意电池,按Ctrl + B跳转到内容浏览器,发现了三个电池的蓝图,其中两个后缀为Child,就是派生父类的子蓝图类!

咱们确认一下:

1、不带Child后缀

在这里插入图片描述

2、带Child后缀
在这里插入图片描述

我们发现确实父类变了,那么正常情况下,如何派生父类呢?其实很简单,右键父类蓝图,然后有一个选项创建子蓝图类,如下图:

在这里插入图片描述

我们进入父类蓝图观察:

在这里插入图片描述

原来,他通过暴露电池的静态网格体模型参数,以及电量供给参数,从而实现子蓝图类,可以配置自己专属的模型样式和电量,从而实现不同灯泡的发光亮度!那么为什么呢?其实本质上就是子蓝图类Cast为父蓝图类,是可以转换成功的!

多态就是面向对象编程的三大概念:封装、继承、多态。

从蓝图派生子蓝图类,本质上就是继承的过程,它会拥有父类蓝图的所有属性和方法。

这里的父类和子类,有点类似于动物和狗的关系,狗从动物派生而来,狗必定是一种动物!

所以派生类能够Cast父类成功!希望大家多多理解着里面的概念!

1.4 Communicating with all actors of a specific class

和所有一种明确类型的actor通信

在这里插入图片描述

**翻译:**一个按钮控制一类所有灯泡的开和关。这个按钮蓝图找到所有灯泡类的实例,然后对其中每一个调用Togglelight事件!

关键概念:

  • Get All Actors Of Class
  • For Each Loop
  • Array

蓝图分析:

在这里插入图片描述

就按钮蓝图和灯泡蓝图嘛,灯泡咱们不看了,重点关注按钮蓝图获取所有同一类Actor的实例。

  • 组件结构
    在这里插入图片描述

    不多赘述

  • 事件图表
    在这里插入图片描述

    我们发现通过Get All Of Class这个蓝图结点,设置咱们关注的类,就可以获得一个Actor的Array,也就是数组,表示很多个Actor,通过遍历这个数组,将他们Cast强转,进行Toggle Light事件调用完成批量开关灯。

概念总结

1、Custom Event

2、Time Line

3、Material Instance

4、Cast

5、Lerp

6、Child Blueprint

7、Get All Actors Of Class

8、ForEachLoop

9、Array

因为篇幅原因,Blueprint_Communication这个关卡还有一半就放下一篇啦!

致谢:

今天的学习就到此为止啦,喜欢的小伙伴点点关注+赞哦!有问题及时留言!感谢大家Thanks♪(・ω・)ノ!我是火火,火一般的男人!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/882851.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VulnHub-Narak靶机笔记

Narak靶机笔记 概述 Narak是一台Vulnhub的靶机,其中有简单的tftp和webdav的利用,以及motd文件的一些知识 靶机地址: https://pan.baidu.com/s/1PbPrGJQHxsvGYrAN1k1New?pwda7kv 提取码: a7kv 当然你也可以去Vulnhub官网下载 一、nmap扫…

【专题】2024年中国白酒行业数字化转型研究报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37755 消费人群趋于年轻化,消费需求迈向健康化,消费场景与渠道走向多元化,这些因素共同驱动企业凭借数据能力来适应市场的变化。从消费市场来看,消费群体、需求、场景及渠道皆展现出与…

PhpStudy | PHP 版本切换流程

关注这个软件的其他相关笔记:PhpStudy —— README-CSDN博客 在使用多样化的 PHP Web 应用程序时,选择合适的 PHP 版本至关重要。例如,一些老旧的应用程序可能是基于早期版本的 PHP 开发的,如果使用最新版本的 PHP 来运行&#xf…

【YOLO学习】YOLOv1详解

文章目录 1. 概述2. 算法流程3. 网络结构4. 损失函数 1. 概述 1. YOLO 的全称是 You Only Look Once: Unified, Real-Time Object Detection。YOLOv1 的核心思想就是利用整张图作为网络的输入,直接在输出层回归 bounding box 的位置和 bounding box 所属的类别。简单…

执行网络攻击模拟的 7 个步骤

在进攻和防守策略方面,我们可以从足球队和美式足球队身上学到很多东西。球员们会分析对方球队的策略,找出弱点,相应地调整进攻策略,最重要的是,练习、练习、再练习。作为最低要求,网络安全部门也应该这样做…

论文笔记(四十六)RobotGPT: Robot Manipulation Learning From ChatGPT

xx RobotGPT: Robot Manipulation Learning From ChatGPT 文章概括摘要I. 介绍II. 相关工作III. 方法论A. ChatGPT 提示机器人操作B. 机器人学习 IV. 实验A. 衡量标准B. 实验设置C. 模拟实验D. 真实机器人实验E. AB测试 V. 结论 文章概括 引用: article{jin2024r…

gateway--网关

在微服务架构中,Gateway(网关)是一个至关重要的组件,它扮演着多种关键角色,包括路由、负载均衡、安全控制、监控和日志记录等。 Gateway网关的作用 统一访问入口: Gateway作为微服务的统一入口&#xff0c…

Qt窗口——QMenuBar

文章目录 QMenuBar示例演示给菜单栏设置快捷键给菜单项设置快捷键添加子菜单添加分割线添加图标 QMenuBar Qt中采用QMenuBar来创建菜单栏,一个主窗口,只允许有一个菜单栏,位于主窗口的顶部、主窗口标题栏下面;一个菜单栏里面有多…

【Linux实践】实验三:LINUX系统的文件操作命令

【Linux实践】实验三:LINUX系统的文件操作命令 实验目的实验内容实验步骤及结果1. 切换和查看目录2. 显示目录下的文件3. 创建和删除目录① mkdir② rm③ rmdir 4. 输出和重定向① 输出② 重定向 > 和 >> 5. 查看文件内容① cat② head 6. 权限7. 复制8. 排…

科大讯飞智能体Python SDK接入流程

第一步:注册账号​ 进入https://passport.xfyun.cn/login,根据提示注册或登陆账号。 ​ 第二步:创建智能体 进入这个网页创建智能体,填好信息: https://xinghuo.xfyun.cn/botcenter/createbot?createtrue&qu…

【GeekBand】C++设计模式笔记4_Strategy_策略模式

1. “组件协作”模式 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。典型模式 Template MethodStrategyObserver / Event 2.…

Webpack 介绍

Webpack 介绍 Date: August 29, 2024 全文概要 Webpack概念: Webpack是一个静态的模块化的打包工具,可以为现代的 JavaSript 应用程序进行打包。 1-静态:Webpack可以将代码打包成最终的静态资源 2-模块化:webpack支持各种模块…

408选择题笔记|自用|随笔记录

文章目录 B树:访问节点建堆!将结点插入空堆广义指令求每个子网可容纳的主机数量虚拟内存的实现方式文件目录项FCB和文件安全性管理级别索引文件三种存取方式及适用器件成组分解访问磁盘次数 C语言标识符 最小帧长物理传输层介质 局域网&广域网考点总…

云计算课程作业1

作业1 Xmanager连接 rhel连接 作业2 首先确认你的虚拟机设置的是NAT 1-3 然后打开这篇blog,并完成第一步和第二步 因为我们是NAT,所以不需要连接网桥,即跳过第三步,但是这里ping一下测试网络连接 2- 如果到这里你发现提示yum…

echarts 导出pdf空白原因

问题阐述 页面样式: 导出pdf: 导出pdf,统计图部分为空白。 问题原因 由于代码中进行了dom字符串的复制,而echarts用canvas绘制,canvas内部内容不会进行复制,只会复制canvas节点,因此导出pdf空白。 解决…

【CPU】CPU的物理核、逻辑核、超线程判断及L1、L2、L3缓存、CacheLine和CPU的TBL说明

CPU物理核及L1、L2、L3及缓存 CPU缓存 CPU 缓存是一种用于存储临时数据以提高计算机程序性能的内存层次结构。它通常分为三个层次:L1(一级)、L2(二级)和L3(三级)缓存。缓存大小是CPU的重…

spring-boot、spring-cloud、spring-cloud-alibaba的常用依赖的依赖声明及pom文件

copy自若依 父工程pom文件&#xff0c;主要定义了依赖的版本号 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sch…

【unity进阶知识1】最详细的单例模式的设计和应用,继承和不继承MonoBehaviour的单例模式,及泛型单例基类的编写

文章目录 前言一、不使用单例二、普通单例模式1、单例模式介绍实现步骤&#xff1a;单例模式分为饿汉式和懒汉式两种。 2、不继承MonoBehaviour的单例模式2.1、基本实现2.2、防止外部实例化对象2.3、最终代码 3、继承MonoBehaviour的单例模式3.1、基本实现3.2、自动创建和挂载单…

每日刷题(算法)

目录 我们N个真是太厉害了 思路&#xff1a; 代码&#xff1a; 折返跑 思路&#xff1a; 代码&#xff1a; 好好好数 思路&#xff1a; 代码&#xff1a; 魔法之森的蘑菇 思路&#xff1a; 代码&#xff1a; 我们N个真是太厉害了 思路&#xff1a; 我们先给数组排序…

安全常用的kali linux是怎样的,如何安装?

黑客或者安全在用的kali linux是怎样&#xff0c;安装 kali Linux的历史 Kali Linux由Offensive Security公司维护,可以追溯到BackTrack Linux这个著名的渗透测试发行版。BackTrack于2006年首次发布,基于Knoppix,集成了许多安全工具。它因功能强大而深受安全研究人员的喜爱。…