UE4常用函数 您所在的位置:网站首页 ue4代码要求 UE4常用函数

UE4常用函数

#UE4常用函数| 来源: 网络整理| 查看: 265

游戏中的角色、场景、道具等都需要美术资源来进行设计,高精度的模型、贴图和光影效果可以带来更加逼真的游戏场景和角色形象,提升游戏的沉浸感和互动性。因此,在游戏开发中,美术资源加载成为经常使用的操作,正确的选择加载资源方法,将会使得游戏性能和画面展现得到较好的结合。下面,我们一起来了解下UE4中的资源加载方法。

# 01资源加载分类

UE4中根据不同的分类标准,可以划分为不同的加载情况:

● 静态加载和动态加载

根据加载的时机,资源加载可以分为静态加载和动态加载。

静态加载主要是在构造函数中完成的加载方式,而在构造函数之外的加载都称为动态加载。

UE4中UObject派生的类,构造函数是在引擎初始化阶段调用的,导致静态加载过程也是在引擎初始化阶段完成的,即当类默认对象(CDO)被创建时实现的。因此,静态加载一个资源时,如果它所需的其他资源没有预加载,则会加载失败。

即静态加载是在引擎初始化阶段完成加载的,而非创建类的对象才加载(涉及到UE4启动类型注册流程)。如果大量资源采取了静态加载的方法,会使得游戏启动缓慢。

● 加载非蓝图资源和蓝图资源

根据加载的对象不同,可以分为加载非蓝图资源和加载蓝图资源

加载蓝图一般使用Class相关的加载函数,加载的是类对象,而非蓝图资源一般使用LoadObject函数,直接加载资源对象。

类型安全:LoadClass函数可以确保加载的蓝图资源类型安全,避免了在运行时出现类型错误的问题。而LoadObject函数是一种通用的加载函数,它不能保证加载的资源类型安全。

编译时检查:LoadClass函数可以在编译时进行类型检查,避免出现潜在的错误。而LoadObject函数是一种运行时函数,它不能在编译时进行类型检查。

LoadClass函数可以预先加载蓝图资源,避免在游戏运行时出现延迟

● 同步加载和异步加载

同步加载是指程序需要等待资源加载结束后才会继续向下执行,如果加载资源比较大,可能导致游戏卡顿;

为了避免上述情况,需要采用异步加载的方法;异步加载虽然是游戏性能得到提升,但是实现方法也更加复杂,将在另一篇文章中详述。

# 02代码实现

在UE4工程中新建TestActor的AActor C++类;

● 静态加载蓝图资源

静态加载蓝图资源的话,在ATestActor的构造函数中可以使用static ConstructorHelpers::FObjectFinder或者static ConstructorHelpers::FClassFinder来实现,定义BPLight或BpClass对象时,需要传入资源路径作为参数。

不过在引擎启动的过程中,提示加载失败了,静态蓝图资源加载限制还是比较大的。

● 静态加载非蓝图资源

同样在在ATestActor的构造函数中,定义StaticMesh对象时,传入静态网格资源路径参数。

查看日志位置,是在引擎启动阶段输出的,并非游戏运行阶段。

● 动态加载蓝图资源

在ATestActor的BeginPlay()函数中,使用LoadClass,模块类名填蓝图资源的基类名;

LoadClass函数定义如下:即封装了StaticLoadClass函数,然后对一些非必填的参数设置了默认值。实际中,也可以根据自己的需要设置这些参数的值。

蓝图资源加载成功后,如果要转换为Actor,需要将UClass对象传递到SpawnActor函数中

● 动态加载非蓝图资源类

在ATestActor的BeginPlay()函数中,使用LoadObject函数,模板参数填资源所属类型名;

LoadObject和LoadClass类似,也是封装了StaticLoadObject函数,并设置了一些非必填的默认值。

在以上加载资源函数中,使用的资源路径可以通过在引擎中选择资源,右键“复制引用”来获取。如果是加载蓝图资源的话,还得在末尾增加"_C"。

# 03小结

● UE4中资源加载的分类

● 静态、动态、蓝图和非蓝图资源加载

● 蓝图资源路径需要加后缀_C

● 本文所介绍的方法都是同步加载



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有