09 2022 档案
摘要:虚幻官方文档:https://docs.unrealengine.com/5.0/en-US/API/Runtime/Core/HAL/FRunnable/ FRunnable “runnable”对象的接口。 可运行对象是在任意线程上“运行”的对象。调用使用模式是Init()、Run()、Exit
阅读全文
摘要:C++中,往往令人头痛的是指针的管理问题!在对象动态构建时,我们需要将对象指针进行存储,一旦忘记释放,那么将会导致不可预估的错误。在C++中排查指针导致的内存泄漏问题实在令人头痛!在虚幻中,为了解决此类问题,加入了智能指针(共享指针,共享引用,弱指针),当我们使用动态方式构建对象时,再也不需要担心内
阅读全文
摘要:词义广泛,用来陈述功能,选项,与其他程序结构进行沟通的方式。接口抽象出了交互结构,提供了两个未知逻辑交互的便捷性。对于编程中,如何更好的设计低耦合程序起到了至关重要的作用。设计者可以在互不关心的情况下,进行友好的程序设计,并且通过接口来完成设计的整合交互。 虚幻引擎中,加入了接口设计,从一定程度上“
阅读全文
摘要:事件本身和多播代理一样,为了操作的安全性,事件提供了额外的操作限定。即禁止在声明事件对象的外部调用事件传播,清理,检查等函数。通过操作隔离,最大程度的增加了事件的安全性。派生类允许调用事件的广播。 在虚幻C++中事件和多播几乎相同。只是构建方式略不同 构建宏 事件类型构建宏由于需要限定事件对象调用约
阅读全文
摘要:代理: 代理可以帮助我们解决一对一或是一对多的任务分配工作。主要可以帮助我们解决通知问题。我们可以通过代理完成调用某一个对象的一个函数,而不直接持有该对象的任何指针。 代理就是为你跑腿送信的,你可以不用关心给送信的目标人具体是谁,只要按照约定好的信件格式进行送信即可 更简单理解,想去调用某个函数,但
阅读全文
摘要:声明一个函数,我们利用这个函数来进行打开资源管理器操作 UFUNCTION(BlueprintCallable, Category = "OpenWindowsFile") TArray<FString> OpenWindowsFiles(); 函数实现: TArray<FString> AActo
阅读全文
摘要:TSoftObjectPtr和TSoftClassPtr 模板类帮助我们在进行资源操作时增加了类型安全检查,我们可以在细节面板中根据给定的模版类型拾取对应的资源,以获得更加高效的操作! 同样的,TSoftObjectPtr和TSoftClassPtr也分为同步加载与异步加载!针对资源拾取类别不同,使
阅读全文
摘要:异步加载 FStreamableManager FSreamableManager可以帮助我们构建异步处理逻辑,用来将加载逻辑与游戏主逻辑进行,以达到高效加载资源的目的。建议FSreamableManager创建在全局游戏的单例对象中,结合FSoftObjectPath进行加载。 FSreamabl
阅读全文
摘要:FSoftObjectPath FSoftObjectPath是一个简单的结构体,使用一个字符串包含资源的完整名称。可以在编辑器中拾取资源(这与直接属性引用相同),但是并不加载资源!资源的加载需要通过额外的代码编写完成! FSoftObjectPath被暴露到面板中对于资源的拾取并没有特定的要求,所
阅读全文
摘要:1、编辑器直接加载: 通过使用属性宏标记UPROPERTY(Edit三个都可以3)来将资产对象指针暴露到编辑器面板,从而直接从编辑器面板拾取资产。 注意:UClass类指针,专门用来拾取类模版资产 // 拾取任意类 UPROPERTY(EditDefaultsOnly) UClass* ActorC
阅读全文
摘要:1、结构体 在虚幻C++中结构体和普通C++结构体构建方式相同,但是如果希望构建于蓝图交互的结构体则需要额外的处理! UE支持结构体的构建和使用,但是由于蓝图特殊,普通的结构体定义无法被蓝图访问,我们需要借助USTRUCT宏进行构建UE中的结构体 语法: USTRUCT(BlueprintType)
阅读全文
摘要:TSet TSet也是键值容器和TMap类似,但速度快,无需提供单独的键进行关联元素,不允许有重复的键。 TSet 也是值类型,支持常规复制、赋值和析构函数操作,以及其元素较强的所有权。集合被销毁时,其元素也将被销毁。键类型也必须是值类型 与TArray的区别: TSet是KV容器 TSet不保证数
阅读全文
摘要:TMap UE中最常用的容器,此容器是关联型容器,存储对象均有一个关联值,通过键值可以高效的进行对象访问 TMap为同质容器,存储数据类型必须相同,TMap 也是值类型,支持常规复制、赋值和析构函数操作,以及其元素较强的所有权。映射被销毁时,其元素也将被销毁。键类型必须为值类型,不能使用指针。 Ma
阅读全文
摘要:说明:容器是方便我们存储数据的载体,在虚幻中,为我们提供了三种容器。分别是TArray,TMap,TSet。首先虚幻提供的容器都是同质容器,只能用来存储相同类型的数据。三种容器具备不同的特性,针对不同的特性,我们可以根据使用场景选择操作的容器。 并且在虚幻定义了丰富的API供开发者使用 注意:在使用
阅读全文
摘要:禁止在UE中使用C++的基本数据类型,这样会影响引擎的跨平台特性 1、基本数据类型 bool 代表布尔值 (永远不要假设布尔值的大小) 。 BOOL 将不会进行编译。 TCHAR 代表字符型(永远不要假设TCHAR的大小)。 uint8 代表无符号字节(占1个字节)。 int8 代表有符号的字节(占
阅读全文
摘要:以下两个步骤均完成才可 1、声明自定义日志分类 定义 /** * A macro to declare a logging category as a C++ "extern", usually declared in the header and paired with DEFINE_LOG_CA
阅读全文
摘要:在使用 AddOnScreenDebugMessage 进行日志输出时,输出中文会导致乱码情况 GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Green, TEXT("消息")); 原因是所使用编码集无法解释中文字符 解决办法: 使文件处于未保存状
阅读全文
摘要:1、直接生成Actor GetWorld()->SpawnActor<AActor>(); GetWorld()->SpawnActor(AActor::StaticClass()); UWorld* world = GetWorld(); world->SpawnActor<AActor>(AAc
阅读全文
摘要:1、Destroyed函数 调用自身Destroy函数进行强制消亡操作 当对象被删除时(非内存删除)进行回调操作 参数说明 bNetForce 是否强制网络同步删除 bShouldModifyLevel 主要是用来控制先删除actor再修改关卡,还是先修改关卡再删除actor,默认是true,即为先
阅读全文
摘要:1、使用PrintString输出 #include "Kismet/KismetSystemLibrary.h" UKismetSystemLibrary::PrintString(this, TEXT("hello!")); 格式化输出,使用方法和C语言print函数一样 #include "K
阅读全文