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

news2024/12/23 11:02:57

文章目录

  • 总览描述
  • 批次阅览
    • 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.coloradmin.cn/o/2164612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于预处理详解 #define 宏 #和##

#和## #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带参数的宏的替换列表中。 #运算符所执⾏的操作可以理解为”字符串化“。 当我们有⼀个变量 int a 10; 的时候,我们想打印出: the value of a is 10 . 就可以写&#xff…

MySQL函数:流程函数

1.IF函数 基本语法:IF(expr1,expr2,expr3) 功能:如果value为true,返回t, 否则返回f 例如:这个里面expr1里面是false,返回的是Error,如果是true,返回OK select if(false, OK, Err…

开通微信视频号直播的流程

首先我们要了解什么是视频号? 视频号其实就是腾讯家的“抖音”/“快手”,可以发布视频和直播(包括直播带货)。 微信视频号不同于订阅号、服务号,它是一个全新的内容记录与创作平台,也是一个了解他人、了解…

适合二开的web组态软件

技术文档 官网网站:http://www.hcy-soft.com 体验地址:by组态[web组态插件] 可以广泛应用于化工、石化、制药、冶金、建材、市政、环保、电力等几十个行业。 一、产品简介 BY组态是完全自主研发的集实时数据展示、动态交互等一体的全功能可视化平台。帮…

OJ在线评测系统 后端基础部分开发 完善CRUD相关接口

完善相关接口 判斷编程语言是否合法 先从用户的请求拿到Language package com.dduo.dduoj.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dduo.dduoj…

OpenHarmony(鸿蒙南向)——平台驱动开发【SDIO】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 SDIO(Secure Digital Input and Outpu…

【Faster-Rcnn】训练与测试

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 💫 欢迎来到我的学习笔记! 1.提前准备 1.1. mobaxterm(远程连接服务器) 链接&#xff1a…

达索系统SOLIDWORKS2025新版本即将来袭

达索系统SOLIDWORKS2025新版本即将来袭 北京众联亿诚是达索官方授权的SOLIDWORKS经销商,专业经销SOLIDWORKS正版软件并提供免费试用、培训认证、二次开发等增值服务。 在CAD软件领域,SOLIDWORKS作为达索系统旗下的旗舰产品,一直以其优越的三…

CTF学习路线(非常详细)零基础入门到精通,收藏这一篇就够了

**CTF概述:**CTF(夺旗赛)是一种网络安全竞赛,通过解决一系列安全问题来测试参赛者的技能和经验。对于网络安全爱好者和从业者来说,学习CTF是一个不错的选择。 下面是从零开始学习CTF的详细规划和路线: 1 基础知识 要开始学习C…

问题:机器字长为n位的二进制数可以用补码来表示()个不同的有符号定点整数。

一、概念 概念:无论原码、反码、补码,n位二进制数可以表示2^n个数值 二、从范围证明 有符号的情况下,表格如下: 其中,原码、反码含有-0、0 , 而补码不划分0 由此,可知: ① 原码…

Ubuntu 编译安装 ImageMagick 来处理图片

一:克隆 ImageMagick cd /tools git clone https://github.com/ImageMagick/ImageMagick.git cd ImageMagick 二:安装编译 ImageMagick 所需的软件包 sudo apt -y install build-essential libltdl-dev libjpeg-dev libpng-dev libtiff-dev libgif-dev…

Unity 外描边简单实现(Shader Graph)

1:原理 将物体的模型空间的位置(也就是顶点数据)放大,作为一个单独的渲染通道单独渲染,这时候模型是已经发大过的,要想看到外描边的效果,需要将正面显示的东西给去掉,显示背面渲染的…

HTTPS证书配置

NGINX、SSl配置 修改conf目录下NGINX中的crt和key文件 单点配置SSL 需要的文件和配置信息 证书和keytool.exe(使用jdk1.8的)工具要在同一个目录下 gxszy.qhxzhny.top.pfx(证书) keystorePass.txt(密码) 使用JDK自带的keyto…

【CSS】变量的声明与使用

原生变量root 伪类 原生变量 CSS中我们可以统一设置变量方便页面维护。变量声明的时候,自定义样式变量名之前加上两根连词线 " – " 即可,使用 var() 来引用。声明的变量是有作用域的 ( 比如是在html中声明的变量,那么该变量在html…

Leecode刷题之路从今天开始

前言 众所周知,数据结构算法程序。算法对程序的重要性不言而喻。我们后端研发在写业务代码的时候很容易忽略算法,因此为了加强算法功底,从今日起,决定每日记录Leecode刷题记录,每道题都有相关的demo代码和文档&#x…

Voxel mamba :基于Mamba的3D目标检测算法解析

目录 1 算法简介1.1 前提补充空间填充曲线(Space-filling Curve)点云分组2 模块介绍2.1 希尔伯特输入层(Hilbert Input Layer)2.2 双尺度 SSM 模块(Dual-scale SSM Block)2.3 隐式窗口分区 (Implicit Window Partition)2.4 Voxel Mamba Backbone2.5 有效感受野 Effecti…

安全使用微软Azure OpenAI:使用 Azure AI Studio 实现企业安全的 5 种方法

Azure 是一个受到数百万客户信赖的创新平台,目前有超过 60,000 名客户正在使用 Azure AI,通过 AI 将他们的雄心勃勃的想法变为现实。Azure AI Studio是一个值得信赖的企业级平台,可用于大规模构建、测试、部署和管理生成式 AI 应用程序。企业…

一键启动,停止,重启nginx

1.一键启动nginx 启动的时候只能启动当前目录的nginx.exe echo off echo 正在启动nginx cmd /c "start nginx.exe" timeout /t 1 /nobreak > NUL2.一键关闭nginx 关闭的时候只能关闭当前目录的nginx.exe echo off echo 正在关闭nginx cmd /c "nginx -s quit&…

kubernetes网络(三)之bird的路由反射器的使用

一、摘要 上一篇文章中我们用 bird 程序实现了三台服务器之间的BGP full mesh。本文我们将实验把full mesh方式改为RR 路由反射器方式 ,让宿主的BIRD相互学习到对方的容器网段,从而达到容器网段能相互通信的目的。 二、bird 实验 bird简介 BIRD 实际…

awvs漏洞扫描工具使用教程

一、工具简介 AWVS(Acunetix Web Vulnerability Scanner)是一款常用的Web应用程序漏洞扫描工具,业界排名Top3,它可以自动扫描Web应用程序并发现其中可能存在的漏洞,包括SQL注入、跨站脚本、文件包含等安全漏洞。AWVS具…