UE5 C++ 入门开发
文章平均质量分 76
使用UE5编辑器 主要用 C++ 开发
iukam
3D开发工程师
展开
-
UE5 C++(十七)— 射线检测
射线检测简单来说就是通过相机发射一条射线,用来检测对象的一种检测机制。使用射线进行命中判定这里主要介绍4种常用的射线检测方式。原创 2024-01-17 15:15:19 · 939 阅读 · 2 评论 -
UE5 C++(十六)— Timeline的使用
这里有官方文档介绍比较详细,我这边简单描述,重在实践。时间轴(Timeline)可以实现从事件中播放基于时间的动画,这些事件可以沿着时间轴在关键帧处触发。可以使用时间轴来处理简单的非动画任务,例如开门、更改光源或对场景中的Actor执行其他以时间为中心的操纵。关键组件:UTimelineComponent包含一系列的 事件(events)、 浮点数(floats)、向量(vectors) 或 颜色(colors) 及其关联的关键帧。这些内容继承自UActorComponents。原创 2024-01-10 12:51:43 · 1756 阅读 · 2 评论 -
UE5 C++(十五)— TimerHandle(定时器)的使用
定时器(Timer) 可用于执行延迟类型的操作,或让某些操作在一段时间内重复执行。定时器的设置只需三步即可完成:声明定时器句柄 FTimerHandle、定义执行函数、设置定时器,其中前两步是第三步的预备工作。首先是声明定时器句柄 FTimerHandle,代码实现如下:定义执行函数设置定时器注意:SetTimer() 各个参数的作用如下:编译之后,运行打印结果。这就像申请了资源,一定要归还一样。取消定时器的话,建议直接使用ClearTimer(),其用法示例如下:清除定时器可在 Actor原创 2024-01-10 10:44:29 · 1124 阅读 · 0 评论 -
UE5 C++(十四)— Interface的使用
接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。接口类中不可以声明成员变量,静态变量。可以声明静态常量作为接口的返回值状态,需要在对应的cpp中定义并初始化,访问时需要使用"接口类型::静态常量名"访问定义的接口方法使用virtual 修饰符 和 “=0” 修饰,表示该方法是纯虚的。因为接口类是无法创建对象的,所以不应该编写构造函数和析构函数。原创 2024-01-09 11:07:26 · 1209 阅读 · 0 评论 -
UE5 C++(十三)— 创建Character,添加增强输入
最后,拖到场景中,把WorldSetting -> Game Mode 设置为null。最后,可以编译一下,看看输入模块(“EnhancedInput” )是否引入成功。在DEMO.Build.cs 脚本中添加增强输入模块。这时候会有默认组件,缺少人物模型,我们可以在这里添加。编译之后,创建蓝图类BP_MyCharacter。点击运行,就可以实现鼠标,键盘第三人称操作了。有个容易出错的点,这里的设置一定要正确。创建MyCharacter C++类。然后添加引用到C++头文件中。首先,是头文件添加引用。原创 2024-01-08 11:56:18 · 899 阅读 · 1 评论 -
UE5 C++(十二)— 委托(代理)、多播委托
这个官网上有很详细介绍,这里介绍几个点委托 是一种泛型但类型安全的方式,可在C++对象上调用成员函数。可使用委托动态绑定到任意对象的成员函数,之后在该对象上调用函数,即使调用程序不知对象类型也可进行操作。复制委托对象很安全。你也可以利用值传递委托,但这样操作需要在堆上分配内存,因此通常并不推荐。请尽量通过引用传递委托。原创 2024-01-05 11:15:07 · 906 阅读 · 0 评论 -
UE5 C++(十一)— 碰撞检测
创建刚才脚本的蓝图类 BP_MyCustomActor 并放到场景中。首先,创建自定义ActorC++类 MyCustomActor。Hit事件的代理绑定之后运行 ,当人物尝试一直前进碰到锥体时会。这个是绑定BeginOverlap和EndOverlap。然后,添加第三人称人物,并拖拽到场景中。完整的MyCustomActor脚本。以上面同样的方式创建Hit的绑定实现。运行之后,碰到和离开都会打印日志。这个是Hit事件的代理绑定。不同的是修改碰撞设置。官网上有相关参考文档。原创 2024-01-04 11:12:56 · 1533 阅读 · 0 评论 -
UE5 C++(十)— 鼠标控制相机移动
在Default Pawn Class 继承类MyPawn中实现。添加AMyPlayerController.h中添加输入绑定。添加AMyPlayerController.cpp中实现绑定。Wheel_Down:代表鼠标滑轮后前移。最后,我们可在运行时设置初始值看看效果。Wheel_Up:代表鼠标滑轮往前移。在默认Pawn中添加相机对外控制方法。首先添加摇臂和相机组件。然后,在构造函数中实现。编译之后,创建蓝图类。原创 2024-01-03 14:15:29 · 602 阅读 · 1 评论 -
UE5 C++(九)— 静态、动态加载类和资源
然后想,创建蓝图类BP_MyCustomActor。编译后,创建蓝图拖到场景中,点击运行。编译后,创建蓝图拖到场景中,点击运行。编译后,创建蓝图,打开后打印日志。到这里,都显示引用上。编译后,会显示引用上。原创 2023-12-26 12:18:09 · 841 阅读 · 0 评论 -
UE5 C++(八)— 创建Actor、添加组件
详细介绍可以去看Actor和几何体官方文档还有大钊的这篇文章《InsideUE4》GamePlay架构(一)Actor和Component所有可以放入关卡的对象都是 Actor,比如摄像机、静态网格体、玩家起始位置。Actor支持三维变换,例如平移、旋转和缩放。你可以通过游戏逻辑代码(C++或蓝图)创建(生成)或销毁Actor。在C++中,AActor是所有Actor的基类。原创 2023-12-21 10:58:16 · 1924 阅读 · 0 评论 -
UE5 C++(七)— UObject、UGameInstance实例化
GameInstance是全局唯一单例,这个在引擎初始化的时候就已经生成,一直存在到引擎关闭。主要用于为游戏保存全局临时数据,想要持久化保存需要用SaveGame。注意:要实现运行时调用可在这里提前配置,具体参考之前文章。在MyObject.cpp中实现。在MyObject.h中实现。编译后,在项目设置中配置。在MyPawn中调用。原创 2023-12-19 12:27:18 · 910 阅读 · 0 评论 -
UE5 C++(六)— 枚举UENUM、结构体USTRUCT和补充属性说明符
编译之后,创建一个关联的信息表格,保存为.csv格式。注意,定义结构体名称前要加F前缀,不然编译不通过。调用枚举,使用TEnumAsByte模板。蓝图生成时暴露变量,方便赋予变量的初始值。编译后在蓝图中可以看到。先创建一个结构体数据类。然后拖到项目文件目录中。编译后,打开关卡蓝图。原创 2023-12-18 11:29:59 · 1756 阅读 · 0 评论 -
UE5 C++(五)— UPROPERTY宏(属性说明符和元数据说明符)
声明带有BuleprintImplementableEvent函数在.h文件中声明,需要在.cpp文件中实现。UPROPERTY(EditAnywhere,BlueprintReadWrite):在蓝图中可读、可写 可以获取和设置变量。声明带有BuleprintImplementableEvent函数在.h文件中声明,不需要在.cpp文件中实现。UPROPERTY(EditInstanceOnly):仅在实例化细节面板可编辑。UPROPERTY(EditDefaultsOnly):仅在默认设置下可编辑。原创 2023-12-15 10:30:00 · 1710 阅读 · 1 评论 -
UE5 C++(四)— 容器(TArray,TMap,TSet)
TArray是虚幻c++中的动态数组,TArray特点:速度快,内存消耗小,安全性高。并且TArray所有元素均完全为相同类型,不能进行不同元素类型的混合。TMap-是一种键值对容器,里面的数据都是成对出现的(Key,Value),Value通过Key值来获取,且Key值不能重复,key值唯一。在C++中创建TMap。在蓝图中创建TMap。在蓝图中创建TSet。原创 2023-12-14 17:20:55 · 855 阅读 · 0 评论 -
UE5 C++(三)— 基本用法(生命周期、日志、基础变量)
忘记说了每次在Vscode修改后C++脚本后,需要编译一下脚本,为了方便我是点击这里编译脚本。原创 2023-12-14 15:30:10 · 959 阅读 · 0 评论 -
UE5 C++(二)— 游戏架构介绍
此外,Game Mode 的蓝图十分实用,因为它们无需调整代码即可启用变量调整。因此可用于使单一 Game Mode 适用到多个不同关卡,无需使用硬编码资源引用或为每次调整请求工程支持和代码修改。如从 AGameMode 进行继承,也可从 AGameState 继承游戏状态(其支持比赛状态机)。AGameMode 是 AGameModeBase 的子类,拥有一些额外的功能支持多人游戏和旧行为。可创建派生自 Game Mode 类的蓝图,并将它们用作项目或关卡的默认 Game Mode。原创 2023-12-14 11:48:01 · 663 阅读 · 0 评论 -
UE5 C++(一)— 入门介绍
表示项目环境依赖信息,用到哪些模块(“Core”,“CoreUObject”,“Engine”,“InputCore”,这些是初始内置模块)。GENERATED_BODY() :表示我们不直接使用父类的构造函数,如果要定义类中初始化操作,需要在.h头文件中声明构造函数,然后在.cpp文件中实现构造函数,它之后的成员是private的。原创 2023-12-14 10:51:35 · 1422 阅读 · 0 评论