UE蓝图进阶

UE蓝图进阶

1 类的介绍与继承

1.1 创建蓝图继承的类介绍

在这里插入图片描述
Actor:可以放置,或者在游戏世界中生成的,不是玩家直接去操控的而是说有一些功能,例如物体的旋转发光等操作,还可以与pawm玩家操控的对象进行一些交互。例如玩家进入到一定的范围内,进行开门关门,开灯关灯等操作。
Pawm:继承自actor ,玩家操控的对象,通过controller进行操控,例如操控一些球,坦克什么的。
Character: 继承自pawn, 更多的是做类人的操作,例如第一人称,第三人称的射击。

1.2 对象与类的区别

在这里插入图片描述
实例化对象,就是把创建好的蓝图类,拖拽到场景中
1)对象:修改对象,只是对这个对象的自身产生影响,并不会对整个类产生影响。
2)类:修改类,会对全局产生影响。
例如在中显示不同颜色的名字,就可以通过点击场景中不同的对象设置。
在这里插入图片描述
通过这里面可以对自己的对象进行不同的操作,不会影响到,类的
在这里插入图片描述
如果想一起改变场景中的BP_CubeA,BP_CubeA2的材质,则在蓝图类BP_CubeA中设置。
在这里插入图片描述

1.3 类的继承

在这里插入图片描述
BP_Cube中 Classseeting有显示
在这里插入图片描述
创建子类BP_CudeB 继承自BP_CubeA,BP_CudeB的内部 都有BP_CubeA的东西。
BP_CudeB中的蓝图脚本,也会继承BP_CubeA中的,并且双击能够进入。
下面是BP_CudeB的蓝图脚本:
在这里插入图片描述

1.4 子类与父类的区别

子类BP_CubeB在自己本类中修改继承父类BP_CubeA的方法,变量、属性、不会影响父类,如果修改了父类的东西,会影响到子类的
在这里插入图片描述
例如在BP_CubeA中把小球拖拽到上方,BP_CubeB也会变,但是把BP_CubeB正方形变成圆柱体BP_CubeA 不会发生改变。
变量在父类中是公有的,子类可以使用,若要在父类中是私有的,子类不可以使用。

1.5 函数重写

父类中的函数。BP_CubeA, 修改材质,修改灯管颜色。ChangeLightColor是BP_CubeA自定义的函数方法。
在这里插入图片描述
BP_CubeB子类想对其重写,完成其他操作。
在子类中,点击override
在这里插入图片描述
然后找到父类函数
在这里插入图片描述
点击完成后,自动增加了一个事件。然后在事件后面添加重写的内容。
在这里插入图片描述
当子类调用时候,事件触发。
在这里插入图片描述
子类先执行父类方法,然后父类BP_CubeA,中Change Light Color方法重写了子类。重写后的函数,而不会执行父类中的函数。此时灯的颜色会由紫色变成黄色。

2 直接蓝图通信

最普通的通信方式,适用于在关卡中存在两个Actors,且它们之间需要进行传递或共享信息时。

2.1 关卡蓝图内的信息交互

定义一个ShowWelcomeMessage的自定义事件。
在这里插入图片描述
右键单击,show welcome message,调用事件。
在这里插入图片描述
定义showmessage函数
在这里插入图片描述
方法头尾和尾部的细节
在这里插入图片描述
右键 show message,调用函数。
在这里插入图片描述

2.2 关卡蓝图与StaticMeshActor信息交互

2.2.1 获取StaticMeshActor第一种方式

在这里插入图片描述
获取正方形实例:
在场景中点击选择Cube, 在关卡蓝图右击 create a reference to cube
在这里插入图片描述
得到
在这里插入图片描述
对得到的Cube做一些操作:
旋转cube
在这里插入图片描述
更改材质
在这里插入图片描述

2.2.2 获取StaticMeshActor第二种方式

把想要调用的存储在变量中,假设定义一个object对象进行 Object reference 引用 ,变量的类型Type是Static Mesh Actor ,这个是场景中的StaticMeshActor的类型,如果场景中有BP_CubeA,要获取BP_CubeA,则Type就需要改为BP_CubeA,灵活运用。
在这里插入图片描述
在这里插入图片描述
也可以在Default中选择
在这里插入图片描述
在蓝图中赋值,要去寻找cube
代码是在关卡蓝图,所以在输入寻找类 是static mesh actor,此时关卡中右面Type类型为static mesh actor 的将全部被找到。
在这里插入图片描述
用Get All Actor Of Class 方法,返回数组中得到,Cube Cube2 和floor
在这里插入图片描述
寻找cube做修改 如果 得到的名字==cube 进行修改,For循环中得到的是找到对象的引用。Get display name : 得到对象的名字。
在这里插入图片描述

2.2.3 获取StaticMeshActor第三种方式

设置数组资源,可以把StaticMeshActor设置到里面。
在这里插入图片描述
获取数组中资源
在这里插入图片描述
把静态资源是cube的加入到数组中
在这里插入图片描述

2.2.4 蓝图关卡Static Mesh Actor绑定事件第一种方式

在这里插入图片描述
获取正方形实例:
在场景中点击选择Cube 在关卡蓝图右击 就能够看到下面的图内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
案例一:鼠标点击了cube2,cube2对应的材质就修改了
显示鼠标,并且激活鼠标点击事件
在这里插入图片描述
就是右击看到的内容中的在这里插入图片描述

2.2.5 蓝图关卡Static Mesh Actor绑定事件第二种方式

直接右击去搜索绑定
在这里插入图片描述
执行前 要把cube对象绑定过来 bind event, 在input里面

2.3 关卡蓝图和蓝图类信息交互

2.3.1 准备工作

添加蓝图类BP_MyActorA
在这里插入图片描述
显示名称
在这里插入图片描述
在这里插入图片描述
创建BP_MyActorA的子类
在这里插入图片描述
BP_MyActorB继承BP_MyActorA
在这里插入图片描述
在添加一个材质变量和修改材质的方法,在父类中BP_MyActorA类。在BP_MyActorA定义一个Change Material函数
在这里插入图片描述
在这里插入图片描述
BP_MyActorB子类里面就这样。
在这里插入图片描述
在BP_MyActorB类里面在添加自定义事件
在这里插入图片描述

2.3.2 在蓝图类中获取StaticMeshActor第一种方式

在蓝图类中,创建变量,把变量暴露出来,直接在场景中选择对象。
在这里插入图片描述
在这里插入图片描述
案例
在这里插入图片描述

2.3.3 在蓝图类中获取StaticMeshActor第二种方式

通过GetAllActorsOfClass节点去查找所有属于该类的对象
在这里插入图片描述

2.3.4 关卡蓝图和蓝图类的通信第一种方式

在场景中选中BP_MyActorA实例化的对象选中后,在事件图表中,右键选择创建对象的引用。
在这里插入图片描述
在这里插入图片描述

2.3.5 关卡蓝图和蓝图类的通信第二种方式

通过GetAllActorsOfClass节点找到MyActorA对象,并存储到变量中
在这里插入图片描述
查找到BP_MyActor的所有,晒选出名字是BP_MyActorA的,并且把他设置给自己定义的MyActorA变量。
在这里插入图片描述
测试MyActorA
在这里插入图片描述

2.3.6 关卡蓝图和蓝图类的通信第三种方式

通过getALL actor with tag 找到对象
在这里插入图片描述
在类里面去添加标签具体的位置在
打开场景页
在这里插入图片描述
点击要添加标签的蓝图类,在右下角 Actor中有tag
在这里插入图片描述
添加一个数组As 存储A
在这里插入图片描述
开始把A存储在数组中
在这里插入图片描述
取数组中的对象然后对其操作
在这里插入图片描述

2.3.7 在关卡蓝图调用蓝图类中的函数

此时2.3.1的准备工作就用到了。
调用自定义函数
在这里插入图片描述
CastTo函数
父类引用指向子类对象,此时的类中没有BP_MyActor对象,通过CastTo将将一个MyActorA的对象转换为MyActorB
在这里插入图片描述

2.3.8 在关卡蓝图调用蓝图类中的事件

在BP_ActorA中新建一个自定义事件
在这里插入图片描述
BP_ActorB是继承BP_ActorA,添加事件和函数重写
在这里插入图片描述
在关卡蓝图中 调用
在这里插入图片描述
在这里插入图片描述

2.4 关卡蓝图和UI的通信

2.4.1 准备工作

在这里插入图片描述
创建UI
在这里插入图片描述
在这里插入图片描述
显示UI
在这里插入图片描述
做测试
在这里插入图片描述

2.4.2 关卡蓝图和UI的第一种通信方式

第一种获得UI的方法:Create UMG Main Widget是通过return value返回值获取到UI对象。
在这里插入图片描述

2.4.3 关卡蓝图和UI的第二种通信方式

第二种方法通过定义变量去存储
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
对UI中的Text
想对text值做修改,但是搜索不到text的控件
在这里插入图片描述
因为text不是作为一个变量 此时要把text的is variable的属性勾选上
返回UI中
在这里插入图片描述
找到
is variable的属性勾选上,这样就可以对text的属性进行操作了在这里插入图片描述
在这里插入图片描述

2.4.4 关卡蓝图和UI的第三种通信方式

Get all widgets of class 方式获取
修改UI中 Text里面内容,target转换为 TextName
在这里插入图片描述
修改颜色通过变量的方式
在这里插入图片描述
修改颜色通过make的方式
在这里插入图片描述

2.4.5 UI事件

在这里插入图片描述
events 点击加号
在这里插入图片描述
添加欢迎信息的文本框
在这里插入图片描述
从事件中操作,出现字,然后在消失掉
在这里插入图片描述
Text Wel 变量是文本框的,UI里面添加的,所以就自动有。

2.5 蓝图类与StaticMeshActor

和关卡蓝图的区别:
在场景中选中,然后去蓝图类中右击创建不能创建。而在关卡蓝图中这样的操作却可以。

2.5.1 蓝图类与StaticMeshActor第一种通信方式

用变量去接收;
在这里插入图片描述
在细节面板中设置中可以看到
在这里插入图片描述
Type 都是 staticMeshactor
此时的sphere已经在细节面板中赋值了,所以它带有static mesh对象
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述

2.5.2 蓝图类与StaticMeshActor第二种通信方式

Get all actor of class
在这里插入图片描述

2.6 蓝图类和蓝图类之间的通信

2.6.1 准备工作

在这里插入图片描述
在这里插入图片描述
允许输入
在这里插入图片描述

2.6.2 蓝图类和蓝图类之间第一种通信方式

暴露变量的方式
在这里插入图片描述
测试
在这里插入图片描述

2.6.2 蓝图类和蓝图类之间第二种通信方式

在这里插入图片描述

2.6.3 子类父类通信注意

在这里插入图片描述

2.7 蓝图类与关卡蓝图

为关卡蓝图添加一个自定义的函数 showmessage
在这里插入图片描述
为关卡蓝图添加一个自定义的事件 ce_showmessage

在这里插入图片描述
用execute调用
在这里插入图片描述
2.8 蓝类和UI
在这里插入图片描述
get all widgets of class 去set
在这里插入图片描述
测试
在这里插入图片描述

2.8 UI和关卡蓝图

关卡蓝图定义函数
在这里插入图片描述
UI中
在这里插入图片描述
在这里插入图片描述
去添加事件
在这里插入图片描述

2.9 UI与StaticMeshActor

在这里插入图片描述
点击按钮更改球体的颜色
在这里插入图片描述
修改后版本,进行筛选修改
在这里插入图片描述

2.10 UI和蓝图类

执行CubeA printnum的函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在UI中添加输入数字的控件
在这里插入图片描述

3 事件调度器

适用于告知其他“正在倾听的”蓝图已发生事件。事件发生时,正在倾听的蓝图便会作出反应,并相互独立地执行预期的操作。

3.1 准备工作

创建一个新的蓝图类 和门的蓝图类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不运行就有效果constructionScrip
添加文字
在这里插入图片描述
事件,BP_door中在event Dispatchers 创建事件调度器
CubeC中事件调度器中的方法
在这里插入图片描述
在这里插入图片描述

3.2 绑定自身的事件,自身调用的情况

需要创建出一个事件调度器
在这里插入图片描述
上面操作是在游戏刚开始的时候,执行所有绑定上bind event to ed_reached的事件。就是把事件绑定上。
下面的操作:
按住r键执行call ed_reached 这样的事件调度器才能够去执行
在这里插入图片描述
如果想点击R call ed_reach 不作用 。解除绑定一个,添加一个unbind 事件即可。
在这里插入图片描述
解除绑定全部
在这里插入图片描述

3.3 绑定函数

定义一个函数
在这里插入图片描述
首先得到自身的引用 右键 create event
在这里插入图片描述
调用刚刚绑定的函数和事件的调用一样
在这里插入图片描述

3.4 类与类进行绑定调用

在BP_door 添加一个事件,模仿开门关门的操作
在这里插入图片描述

在这里插入图片描述
添加actorc的引用变量
在这里插入图片描述
在这里插入图片描述
到BP_MyActorC中调用
在这里插入图片描述

3.5 在关卡蓝图中的使用

在这里插入图片描述
依然是通过变量
在actorC中调用
在这里插入图片描述
或者直接右键能够寻找到在actorC中定义的事件
在这里插入图片描述
2种定义的方法
在这里插入图片描述
在actorC中调用
在这里插入图片描述

3.6 事件调度器和UI

设计UI,是否进入下一个关卡
在这里插入图片描述
添加一个panel
在这里插入图片描述
Panel 也设置为一个变量显示与否,这样就可以把panel设置为是否显示
在这里插入图片描述
为UI的蓝图添加事件
在这里插入图片描述
在UI中得到ActorC 做事件的绑定
在这里插入图片描述
绑定结束 ,在在actorC中调用
在这里插入图片描述

4 接口

在这里插入图片描述
在这里插入图片描述
设置开门关门,开灯关灯的类
在这里插入图片描述
在接口中有2个function,接口内部
在这里插入图片描述
在这里插入图片描述
在要使用接口的蓝图类中的classsetting 点击Add 接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在门的蓝图类中添加刚刚创建的接口文件变成了事件,搜索接口的名字
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在灯的蓝图类中添加刚刚创建的接口文件
在这里插入图片描述
在另外一个蓝图类中调用 get interface 放回门和灯的
在这里插入图片描述
返回的有灯,有门。此时灯和门都执行操作,如果想让某一个物体执行单独的操作,那么要 if 选择一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@大宁字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值