欢迎光临散文网 会员登陆 & 注册

一、WorldContextObject(世界上下文对象)

2023-02-18 11:08 作者:爱玩UE5的小哥哥  | 我要投稿

一.了解Actor和UObject的一个区别

1.Actor具备挂载组件的能力,它可以通过Scene组件,拥有Transform(坐标)的概念,它还可以通过Mesh组件,拥有实体概念,换而言之,Actor具有可见,可被放置的特性,它像是一件物品,能够被看到,能够被改变坐标信息.

UObject不能够挂载组件,不具备坐标概念,没有实体,因此也不能被放置到世界中.

Actor能够被放置到Level(关卡)中,存在于关卡(世界)中,因此Actor能够获得自身所在的世界信息 ,就想你能知道你居住的城市一样.

二.WorldContextObject作用

如上面所说,UObject无法获得世界信息(实例),那么如果我们想在UObject中实现一个获取当前世界中某种类型所有实例的功能(GetAllActorsOfClass)该怎么办?

这个时候我们就需要有个中介,不能直接获取世界信息,那么我们尝试间接获取,让能够直接获得世界实例的实例把世界信息间接告诉UObject,这个中介就是WorldContextObject. 

三.通过分析GetAllActorsOfClass来了解WorldContextObject

该函数的使用元说明符:meta=(WorldContext="WorldContextObject") 

四.实操

新建一个c++类继承于BluePrintFunctionLibrary:Cpp_FunctionLibrary

.h文件

.cpp文件

在世界场景中放置三个BP_ThirdPersonCharacter的小白人,控制权都是Disable,此时运行后有生成一个BP_ThirdPersonCharacter;不理解为啥凭空出现小白人,详见

新建一个蓝图类:NewBluePrint(放入场景世界中),调用TestContextObjectFun函数

C++断点

竟然是NewBluePrint这个蓝图类

这就是WorldContext的特性,自动获取调用它的对象,将其赋值给它指定的参数(meta=(WorldContext="WorldContextObject")),这样我们就能通过WorldContextObject来间接获取当前的世界了.这就是WorldContext的作用:作为UObject获取世界实例的媒介 




一、WorldContextObject(世界上下文对象)的评论 (共 条)

分享到微博请遵守国家法律