随笔分类 -  UE4 主线日志

主要用于常用开发知识点记录,包括C++、蓝图、动画等模块
摘要:基于UGameplayStatics 获取运行时间 /** Returns the frame delta time in seconds, adjusted by time dilation. */ UFUNCTION(BlueprintPure, Category = "Utilities|Ti 阅读全文
posted @ 2021-05-08 09:41 砥才人 阅读(3283) 评论(0) 推荐(0) 编辑
摘要:切换关卡 基于 UGameplayStatics:: OpenLevel UGameplayStatics::OpenLevel(GetWorld(), TEXT("NewMap")); OpenLevelBySoftObjectPtr FSoftObjectPath NewMapPath(TEXT 阅读全文
posted @ 2021-05-07 23:27 砥才人 阅读(5250) 评论(2) 推荐(0) 编辑
摘要:获取 Actor TActorIterator 遍历 可以用于遍历 Actor,也可以用于遍历 Component for (TActorIterator<AStaticMeshActor> ActorIter(GetWorld()); ActorIter; ++ActorIter) { UKism 阅读全文
posted @ 2021-05-07 22:51 砥才人 阅读(7418) 评论(0) 推荐(1) 编辑
摘要:World.h 库里的 Trace API Trace模式 TraceSingle 单个结果 TraceMulti 多个结果 Trace 的检测依据 ByChanne ByObjectType ByProfile LineTraceSingleByChannel 由于一般不使用 World 里的Tr 阅读全文
posted @ 2021-05-07 21:57 砥才人 阅读(8641) 评论(0) 推荐(0) 编辑
摘要:概念 碰撞对象通道与预设 默认提供碰撞对象类型,如 WorldStatic、WorldDynamic等。允许用户自定义 默认提供碰撞预设,如 NoCollision、BloackAll、OverlapAll。允许用户自定义 碰撞响应设置 可以用来设置是否模拟物理碰撞以及触发 Overlap 事件 碰 阅读全文
posted @ 2021-05-06 21:03 砥才人 阅读(4698) 评论(0) 推荐(1) 编辑
摘要:概念 定时执行操作,可执行一次,或循环执行直到手动终止 定时器在全局定时器管理器(FTimerManager 类型)中管理。全局定时器管理器存在于 游戏实例 对象上以及每个 场景 中 定时器需要绑定委托或函数,作为执行体。这些函数将填充 FTimerHandle 定时器句柄 FTimerHandle 阅读全文
posted @ 2021-05-05 22:40 砥才人 阅读(3420) 评论(0) 推荐(0) 编辑
摘要:// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/ObjectMacros.h" #include "UObject/Object.h" 阅读全文
posted @ 2021-05-05 16:56 砥才人 阅读(2474) 评论(0) 推荐(0) 编辑
摘要:// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/Script.h" #include "UObject/ObjectMacros.h" 阅读全文
posted @ 2021-05-05 16:54 砥才人 阅读(5891) 评论(0) 推荐(0) 编辑
摘要:// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/ObjectMacros.h" #include "UObject/Object.h" 阅读全文
posted @ 2021-05-05 16:49 砥才人 阅读(2858) 评论(0) 推荐(0) 编辑
摘要:播放声音 PlaySoundAtLocation() USoundCue* HitSound = LoadObject<USoundCue>(this, TEXT("SoundCue'/Game/Demo_Drone/Sound/explore_Cue.explore_Cue'")); if (Hi 阅读全文
posted @ 2021-05-05 16:34 砥才人 阅读(1582) 评论(0) 推荐(0) 编辑
摘要:Actor的生成与销毁 创建Actor实例 UClass* TSubclassOf<T> SpawnActor() UPROPERTY(EditAnywhere, Category = "init") UClass* bullet0; // 取类 UPROPERTY(EditAnywhere, Ca 阅读全文
posted @ 2021-05-05 16:11 砥才人 阅读(4172) 评论(0) 推荐(1) 编辑
摘要:UObject 的创建 NewObject 模板类 本例使用 UE 4.26,只剩下 NewObject 用来创建 UObject,提供两个带不同可选参数构造函数的模板类 Outer 表示这个对象的外部对象,通常可传 this 指针进去 Name 为对象名,如果没有自定义,默认生成,自带 GetNa 阅读全文
posted @ 2021-05-05 13:04 砥才人 阅读(12301) 评论(1) 推荐(2) 编辑
摘要:基本概念 UE4 对 UObject 对象提供垃圾回收 UE4 对原生对象不提供垃圾回收,需要手动进行清理 方式 malloc / free new / delete new与malloc的区别在于,new在分配内存完成之后会调用构造函数。 缺点 如果不及时清理,则会占用内存,或者导致内存泄漏 如果 阅读全文
posted @ 2021-05-04 17:00 砥才人 阅读(8795) 评论(0) 推荐(0) 编辑
摘要:源码下载 git clone git clone https://github.com/20tab/UnrealEnginePython 直接下载zip https://github.com/20tab/UnrealEnginePython 编译 新建C++ UE4工程 拷贝文件夹到Plugin/U 阅读全文
posted @ 2021-05-02 09:30 砥才人 阅读(1439) 评论(0) 推荐(0) 编辑
摘要:概念 AsyncTask AsyncTask 系统是一套基于线程池的异步任务处理系统。每创建一个AsyncTas,都会被加入到线程池中进行执行 AsyncTask 泛指 FAsyncTask 和 FAutoDeleteAsyncTask,一般声明为友元函数,FNonAbandonableTask 派 阅读全文
posted @ 2021-05-01 17:37 砥才人 阅读(5384) 评论(0) 推荐(0) 编辑
摘要:概述 TaskGraph 系统是UE4一套抽象的异步任务处理系统 TaskGraph 可以看作一种”基于任务的并行编程“设计思想下的实现 通过TaskGraph ,可以创建任意多线程任务, 异步任务, 序列任务, 并行任务等,并可以指定任务顺序, 设置任务间的依赖, 最终形成一个任务图, 该系统按照 阅读全文
posted @ 2021-04-30 23:17 砥才人 阅读(3209) 评论(0) 推荐(2) 编辑
摘要:概述 UE4里,提供的多线程的方法: 继承 FRunnable 接口创建单个线程 创建 AsyncTask 调用线程池里面空闲的线程 通过 TaskGraph 系统来异步完成一些自定义任务 支持原生的多线程 std::thread 在GameThread线程之外的其他线程中 不要 spawning 阅读全文
posted @ 2021-04-30 01:25 砥才人 阅读(6167) 评论(2) 推荐(1) 编辑
摘要:一般先跳转到一个临时的关卡,然后异步加载目标关卡,同时展示Loading界面 对于含有流关卡的目标关卡,可以先载入子关卡 蓝图异步加载 无进度条 C++ 异步加载关卡 LoadPackageAsync bool bIsLoaded; UPROPERTY() FString LoadPackagePa 阅读全文
posted @ 2021-04-27 23:08 砥才人 阅读(6932) 评论(0) 推荐(0) 编辑
摘要:同步加载 同步加载会造成进程阻塞。 FObjectFinder / FClassFinder 在构造函数加载 ConstructorHelpers::FObjectFinder ConstructorHelpers::FClassFinder 参考 【UE4 C++ 基础知识】<10>资源的引用 L 阅读全文
posted @ 2021-04-27 17:37 砥才人 阅读(6404) 评论(0) 推荐(2) 编辑
摘要:2种引用方式 硬引用(Hard Reference) 即对象 A 引用对象 B,并导致对象 B 在对象 A 加载时加载 硬引用过多会导致运行时很多暂时用不到的资源也被加载到内存中 大量资源会导致进程阻塞,致使程序情动事件过长 用不大的资源也在内存中,会占用内存 软引用(Soft Reference) 阅读全文
posted @ 2021-04-26 21:22 砥才人 阅读(3838) 评论(0) 推荐(1) 编辑