【UE·C++】UE4获取当前环境与WorldContextObject

这篇具有很好参考价值的文章主要介绍了【UE·C++】UE4获取当前环境与WorldContextObject。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 判断PC端当前是否是在PIE(Play In Editor)下运行
//如果在外部调用可以加上UFUNCTION
UFUNCTION(BlueprintCallable,BlueprintPure, meta=(WorldContext="WorldContextObject"))
bool UMyHttpRequest::RunPIE(UObject* WorldContextObject)
{
	return WorldContextObject->GetWorld()->WorldType == EWorldType::PIE;
}

通过以上内容我们看到我们要获取当前系统的运行环境,需要需要使用世界上下文(WolrdContext)获取World实例,然后通过World实例获取WorldType,UMyHttpRequest是我自定义的类,继承自UObject,而UObject众所周知是不能挂载组件的,也没有坐标的概念,没有实体当然就不能放置在场景中,而Actor虽然也是继承自UObject,但是它具备挂在组件能力,有坐标Transform的概念(通过SceneComponent),有实体概念(通过MeshComponent),可以被放置到场景中,既然Actor可以被放置在Level中,处于世界中,所以Actor可以获得自身所在的世界信息,就像你知道在世界中所在的地址一样

那么如果我们自定义的UObject类,要获取我们类实例所处的世界信息怎么办,就像代码所示的我们在类中需要实现获取当前运行环境的功能,或者我们要使用获取某个Actor类在世界中的所有actor实例,这时候就需要用到meta中的WorldContext特性了,我们通过WorldContextObject作为中介,把世界信息告诉我们的UObject,这是自定义的通过Actor类获取该Actor在世界中所有实例的函数文章来源地址https://www.toymoban.com/news/detail-543059.html

	UFUNCTION(BlueprintCallable,Category="CustomDefine",meta=(WorldContext="WorldContextObject))
	static void MyGetActorByClass(UObject * WorldContextObject,TSubClassOf<AActor> ActorClass);
	TArray<AActor*> UMyObject::MyGetActorByClass(UObject * WorldContextObject,TSubClassOf<AActor> ActorClass)
	{
		TARRAY<AActor*> OutActors;
		if(ActorClass)
		{
			if(UWorld * World = GEngine->GetWroldFromContextObject(WorldContextObject,EGetWorldErrorMode::LogAndReturnNull))
			{
				for(TActorIterator<AActor> it(World,ActorClass);it;++it)
				{
					AActor * Actor = *it;
					OutActors.Add(Actor);
				}
			}
		}
	}

到了这里,关于【UE·C++】UE4获取当前环境与WorldContextObject的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4获取Actor下面的组件

    在Actor中包含了很多的网格体或者粒子组件,如何获取它们?可以通过一下函数函数 aaa

    2024年02月14日
    浏览(59)
  • [虚幻引擎][UE5]获取当前系统的时间

    效果: 效果: 缺点:没有办法都是两位

    2024年02月11日
    浏览(47)
  • 【UE4 C++】03-新建UE C++工程,新建C++类

     UE版本:4.26 新建一个空白模板工程,选择C++项目,选择项目名和项目存储位置,然后点击创建项目。 新建C++类  选择父类为Character  命名,选择公有,然后点击创建类  等待编译完成  此时在Visual Studio中可以看到我们刚才创建的类  在UEEditor中新建一个蓝图类,父类为“

    2024年02月16日
    浏览(42)
  • UE4 云渲染环境搭建

    基于ue4的云渲染目的在与将ue4实时渲染图像帧通过视频流的方式一帧一帧的传到浏览器端,主要是因为基于web的三维渲染效果不佳,通过ue4的强大渲染能力与各种功能的支持能力使得网页端也可以实时看到好的效果。 这个过程服务之间使用的是反向代理的机制,过程大概分为

    2023年04月08日
    浏览(41)
  • 【UE4】C++编程

    .vs:VS的缓存文件夹; Binaries:存放UE的工程的可执行文件,以及编译的中间文件; Biuld:存放一些编辑器相关的日志; Config:存放游戏的默认配置文件; Content:存放项目资产; DerivedDataCache:主要存放DivX Descriptor File文件,应该是UE为制作影视视频准备的; Plugins:存放项目

    2023年04月08日
    浏览(31)
  • UE4 C++ 之 打印

    1.1 打印文本内容 1.2 打印字符串 1.3 打印浮点型变量 1.4 打印整型变量 2.1 自定义输出日志 参数说明: 2.2 官方自带的打印输出日志  官方的输出日志有三种,三种分别代表输出的日志类型是日志类型,警告类型,错误类型,颜色也不相同  2.3  打印 打印字符串 打印整型 打印

    2024年02月15日
    浏览(31)
  • 【虚幻引擎UE】UE4/UE5 基于2D屏幕坐标获取场景3D坐标 射线检测(蓝图/C++)

    射线检测(Ray Casting) 是一种计算机图形和计算机图形学中的基本技术,用于检测光线或射线是否与三维场景中的物体相交,以确定相交点的位置和其他相关信息。射线检测通常用于实现各种交互功能、渲染效果和物理模拟,包括但不限于鼠标拾取、光线追踪、碰撞检测和物

    2024年02月07日
    浏览(121)
  • UE4.27.2 Android开发环境配置

    虚幻官方文档链接:https://docs.unrealengine.com/4.27/zh-CN/SharingAndReleasing/Mobile/Android/AndroidSDKRequirements/ 虚幻4.27配置Android环境软件要求: 请确保UEAndroid平台组件已安装及Android Studio版本和VisualStudio版本符合要求。 下载链接:https://www.oracle.com/java/technologies/downloads/archive/ 我这里选择了

    2024年02月06日
    浏览(45)
  • 【UE4 C++】07-角色运动设置

    可以看到我们可以通过WASD控制角色前后左右移动,通过鼠标控制摄像机旋转朝向。   1.在虚幻商城中搜索“Gideon”,将该免费资源添加到工程中(大概2.6G) 2. 打开之前创建的“PlayerCharacter”  选中网格体组件,骨架网格体选择“Gideon”  调整变换 动画类选择“Giden_AnimBlue

    2024年02月04日
    浏览(43)
  • UE4 无用の小技巧之联机游戏获取自身控制器

    文章内容仅为个人学习所得,如有错误,还请指正!谢谢 通常在UE4中获取玩家控制器是使用GetPlayerController,但在联机游戏中,想要获取玩家所拥有的控制器时,常规的GetPlayerController所获取的控制器只在服务端是正确的,因为在联机模式下,玩家的PlayerIndex是不一致的 在Paw

    2024年02月12日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包