![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
虚幻4-C ++
SimpleCloud94
讲师,VR,数字城市,游戏
展开
-
UE4_c++ 设置Actor BeginPlay的顺序
使一个Actor的BeginPlay的优先级提高到GameMode之前原创 2022-05-09 23:20:09 · 1949 阅读 · 1 评论 -
UE4_EditorUtilityWidget上读取到大量数据优化方法
经过一段时间的使用,创建编辑器UI引起的卡顿主要有以下两方面。短时间内大量创建UI,像Vertical Box这种类型的容器,短时间创建几百个子容器不会造成卡顿,但是如果创建成千上万,就会引起卡顿。从其他地方的数据接口获取了累计上万的数据,存放到了UI上。往往是根据获取到数据从而创建UI,造成双重卡顿。数据量大,创建的UI多。UI创建问题如果不需要双滚轮的效果,可以使用TreeView和ListView这样容器,它们在根据几万条数据创建大量UI时,做了一定的UI上的优化,优化原理,类似分页。虽原创 2022-04-11 16:56:41 · 834 阅读 · 0 评论 -
UE4:自定义Slate 点击保存 出现USlot ReleaseSlateResources() 异常
Error:(TSharedPtr<SWidget>'s) are being released in the UWidget's ReleaseSlateResources()原创 2022-01-21 18:08:52 · 606 阅读 · 0 评论 -
UE4_C++ WorldContextObject
据别人说:Actor具备挂载组件的能力,因此可以通过Scene组件,拥有Transform,因而具有坐标的概念。Object不具备挂载组件的能力,因此不具备坐标概念。因此UObject要想获得WorldContext只能通过中介,让能够直接获取世界实例的实例把世界信息间接告诉UObjectmeta=(WorldContext="WorldContextObject") 通过meta,自动获取调用它的对象,将其赋值给它指定的参数(meta=(WorldContext="WorldContextOb原创 2021-12-22 17:42:51 · 2285 阅读 · 0 评论 -
UE4_C++ 拼接Json嵌套结构
在ue4 端要生成如下的一种嵌套Json发送到服务端{"id":"1","name": "A","children": [ { "id": "1588", "name": "标高 ", "children": [ { "id": "-2000032", "name": "楼板", "children": [原创 2021-12-21 20:33:35 · 1788 阅读 · 0 评论 -
UE4_C++ 生成UUID
C++ 生成UUID原创 2021-12-10 16:39:39 · 2015 阅读 · 0 评论 -
UE4_DatatTable数据保存
UE4 提供了很多数据持久的工具,很多…1,2,3网上使用UE4 c++ 操作DataTable的也很多,不接入别人的链接了。使用C++ 操作DataTable修改数据也没啥大的问题坑爹的地方:修改完数据之后,重启编辑器之后,修改的数据恢复之前的默认值了解决办法:引入模块EditorScriptingUtilities引入头文件#include "EditorAssetLibrary.h"使用代码const TSoftObjectPtr<UDataTable> Sour原创 2021-10-11 14:19:41 · 1130 阅读 · 2 评论 -
UE4_ProcessEvent
1111原创 2021-10-11 14:10:08 · 1568 阅读 · 0 评论 -
UE4_使用模板_遍历Actor 和 遍历DataTable
使用模板遍历Actor模板定义template <typename T>void UGlobalHelperTool::FindAllActors(UWorld* World, TArray<T*>& Out){ for (TActorIterator<T> It(World); It; ++It) { Out.Add(*It); }}使用// 其中ABNBasePostProcessVolume 是自定义的Actor类//原创 2021-09-28 16:12:31 · 1620 阅读 · 1 评论 -
UE4_编辑器下获得GetWorld()
编辑器下获得UWorld,代码GEditor->GetEditorWorldContext().World()刚开始一直以为没有引入GEditor的模块不断的测试发现GetEditorWorldContext()也需要引入模块UnrealEd原创 2021-09-28 15:36:52 · 4438 阅读 · 0 评论 -
UE4_UStruct 遍历
一个结构体中存在一个Val变量,Val变量的类型是FVector4,想从c++层面去遍历获得Val的值上图是很早之前的一个Property继承关系图。当然,在4.25UProperty被FProperty夺笋。好处呢,见下:没有继承UObject后的开销提高了引擎启动时间提高GC处理时间明显内存使用量的减少打包后包体体积减少自定义结构体的遍历USTRUCT(BlueprintType, meta=(HiddenByDefault))struct FPostProcessSetti.原创 2021-09-16 16:17:42 · 1850 阅读 · 0 评论 -
UE4_DataTable使用c++创建的结构体无法编辑变量值
错误现象如下,创建的属性字段,无法在编辑器中进行编辑初步排查以为是c++属性字段的宏设置问题,截图如下USTRUCT(BlueprintType)struct FTimePropertyConfig : public FTableRowBase{ GENERATED_USTRUCT_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite,Category = "SkySystemLib|Time") FString ElementName;原创 2021-08-24 15:06:36 · 606 阅读 · 1 评论 -
UE4_AsyncTask应用笔记
在开发过程中如果把所有的逻辑都放到GameThread里,难免会卡顿。因此这时候,往往会用到多线程。UE4提供的多线程解决方案有三种。这里我们着重说一下AsyncTask的应用。一般来说,用AsyncTask都是一些业务逻辑不复杂的交给它来处理。因为省去了new Thread的开销。AsyncTask 下边又有几种不同的Task类型,这里说的是FNonAbandonableTask 和 FAutoDeleteAsyncTask。对于FAutoDeleteAsyncTask,在任务结束的时候,它会自.原创 2021-06-23 10:09:54 · 2464 阅读 · 1 评论 -
UE4_C++调用蓝图里的事件
目前网上的大多数方法都是,在c++中定义一个基类,然后让蓝图去实现或者…在此提供 另外两种方法CallFunctionByNameWithArguments函数名称Foo,参数xxxFOutputDeviceNull OutputDeviceNull;const TCHAR* CmdAndParams = TEXT("Foo XXX")this->CallFunctionByNameWithArguments(CmdAndParams, OutputDeviceNull, nullp.原创 2021-05-28 11:01:26 · 1424 阅读 · 0 评论 -
UE4_C++访问蓝图里的变量
有没有碰到这样的问题,之前的同事用“连连看”实现了项目的逻辑,后续你要维护推展项目的开发。但头疼的是,你是个coder,not “连连看”玩家。这时候how to do itUE4 C++ 访问蓝图里的变量c++获得BP的方式在访问蓝图变量之前,要先获得该蓝图,获得蓝图引用的方式例如获得一个pawn类的InitialSpeed变量100// BPUPROPERTY(EditAnyWhere, BlueprintReadWrite, Category = "MyActor")TSubclas.原创 2021-04-27 21:29:04 · 5747 阅读 · 6 评论 -
UE4_资源硬加载和软加载
这部分对于很多小项目,直接通过硬加载的方式就可以完成需求。资源的软加载的方式可以降低内存在某一瞬间的暴增,所以合理的设计资源的加载方式,在一定程度上可以优化项目。原创 2021-02-23 14:14:05 · 1469 阅读 · 1 评论 -
UE4_智能指针(2)
弱指针弱指针不能影响强指针的引用计数在使用弱指针时,需要对其进行检测,判断是否有效弱指针最大的用途就是解决闭环引用问题只是使用它,没有管理引用对象生命周期的权限class IAnimal{public: // 克制 virtual void SetRestraint(const TSharedPtr<IAnimal>& InWhatAnimal) = 0; // 类包含虚函数,但其不常用的析构函数不是虚函数;该类的实例可能无法进行正确析构 virtual ~IA原创 2021-02-19 16:54:13 · 455 阅读 · 0 评论 -
UE4_智能指针(1)
概念在ue中,继续自UObject的类可以被ue内置的垃圾回收管理。自定义的结构体和类需要开发者管理,因此ue自己实现了一套智能指针系统,为了跨平台。使用ue智能指针好处:跨平台与内置ue容器协调工作针对平台的优化,如多线程类型TSharedPtrTSharedRefTWeakPtrTUniquePtr举例TSharedPtr// 1.创建共享指针TSharedPtr<FTestA> TestPtr = MakeShareable(new FTestA());原创 2021-02-19 16:20:54 · 546 阅读 · 0 评论 -
UE4_Content目录资源检索以及异步载入资源
在写插件或者资源动态加载的过程中,需要对Content目录下的资产文件进行遍历或者检索参考内容:UE4异步载入资源Object Libraries 是Content Browser 用来进行资产筛选和显示的类,在游戏逻辑中也可以使用。 //头文件#include "Engine/ObjectLibrary.h"// 声明UObjectLibrary* ObjectLibrary; TArray<FSoftObjectPath> assetPath;// 函数实现void .原创 2021-02-18 15:19:27 · 1099 阅读 · 0 评论 -
UE4_C++中声明代理传入数组参数
如果声明代理中需要传入数组,如下 DECLARE_DYNAMIC_DELEGATE_OneParam(FSerachDataByStringValDelegate, TArray<FPOIData>, poiDataSearchArr);在蓝图层面是会报错的,报错信息如下customevent_0 signature error: the function/event ‘customevent_0’ does not match the necessary signature - ha原创 2021-02-15 10:49:30 · 1027 阅读 · 0 评论 -
UE4_异步_数据处理(Json)
如果一个数字城市demo,需要将第三方海量的数据进行处理展示,将数据的处理放在GameThread 上显然是不合理。这个时候需要用多线程解析数据,防止游戏线程的阻塞关于异步和多线程前两天面试被别人问到一个问题,异步和多线程的区别。面试的人告诉了我一个“答案”。这个“答案”不重要,重要是让我去思考了下面这段话。基础理论固然重要,但是它并不太适合编程的初学者。进入编程这个行业的人形形色色,我们并不能够去问一个统一的、仿照他人面试模式的面试。就好像我们做编程总在不断地copy一样。在我工作的身边有c++.原创 2021-02-14 19:00:02 · 764 阅读 · 0 评论 -
UE4_TSubClassOf 使用
在写插件的过程中,需要在蓝图中指定某一类型的类,在蓝图层面写一个基类蓝图的变量就可以实现这样的操作。但是在c++层面如何实现呢?TSubClassOfUPROPERTY(EditDefaultsOnly,Category="BulletType") UClass* BulletTypeByUClass; // 所用的Class类 UPROPERTY(EditDefaultsOnly,Category="BulletType") TSubclassOf<ABaseBullet>原创 2021-02-14 12:01:01 · 2156 阅读 · 0 评论 -
UE4_子系统(SubSystem)应用案例
参考来源见《InsideUE4》GamePlay架构(十一)Subsystems案例来源油管官方视频为什么要用子系统这个模块,往往在开发中我们要维护某一个类型(类别)的集群的一个生成,添加,业务处理,销毁等逻辑,一般情况下会写一个Manager的东西。 官方推出这个子系统这个概念,个人理解是方便开发者去更好地、方便地实现上述陈述的东西。在开发中经常使用的官方插件VaRest(用来处理http)就是把它设计成了一个子系统的样子。以下代码摘自油管的官方视频,记录下来,以便日后学习使用。.h// .原创 2021-01-30 11:30:05 · 3653 阅读 · 1 评论 -
UE4_静态类静态变量的引用错误(Error Link2001)
错误如下2>HttpTest.cpp.obj : error LNK2001: 无法解析的外部符号 "public: static class TArray<struct FPOIData,class TSizedDefaultAllocator<32> > UHttpTest::global_poiDataSearchArr" (?global_poiDataSearchArr@UHttpTest@@2V?$TArray@UFPOIData@@V?$TSizedDefaul原创 2021-01-29 11:19:14 · 1443 阅读 · 1 评论 -
UE4_插件开发
参考链接1参考链接2参考链接3在参考链接3中要注意的是…PluginPrivatePCH.h的文件的存放目录原创 2019-01-02 10:06:33 · 558 阅读 · 0 评论 -
UE4_fatal error LNK2019 and fatal error LNK1120
官方错误连接 出错原因,创建基于某个C++的子类时,报错如下。1>------ 已启动生成: 项目: UE4, 配置: BuiltWithUnrealBuildTool Win32 ------2>------ 已启动生成: 项目: C_SX, 配置: Development_Editor x64 ------2>Creating makefile for hot re...原创 2019-01-02 09:40:12 · 2320 阅读 · 0 评论 -
VS_VS2015或者VS2017出现跳过:1或者Skiped:1
问题如下:解决办法:把绿色的部分全部勾上即可解决问题!原创 2018-12-17 14:11:31 · 1904 阅读 · 0 评论 -
UE4_Bug之编译无错,vs启动报错_Vs报错汇总
偶时,因为不小心,报一些莫名其妙的错误。如下:解决办法:原创 2018-12-17 10:34:54 · 805 阅读 · 0 评论 -
UE4_VR传送
VR传送原创 2017-08-07 09:57:29 · 2651 阅读 · 2 评论 -
UE4_fatal error C1083: 无法打开包括文件: “DDCommon.h”: No such file or directory
最近在看梁迪的框架视频,大佬的编译是如此的顺滑,自己的就是编译不过。一顿百度,就是不行,其实这个文章的标题的报错信息,之前也遇到过,解决过。但是当时没有写日志的习惯,解决了,然后就忘了,看这篇文章的同好,看完之后,点个赞,然后你自己也动手写一份,日后好查看。E:/RaceCarFrame/Plugins/DataDriven/Source/DataDriven/Private/DDCommon/DDCommon.cpp(4): fatal error C1083: 无法打开包括文件: “DDCommon原创 2020-07-13 10:05:20 · 5019 阅读 · 6 评论 -
UE4:无法解析的外部符合
在编写插件继承UserWidget的时候,出现了以下报错信息错误 LNK2019 无法解析的外部符号 "__declspec(dllimport) public: __cdecl UUserWidget::UUserWidget(class FObjectInitializer const &)" (__imp_??0UUserWidget@@QEAA@AEBVFObjectInitializer@@@Z),该符号在函数 "public: __cdecl UDDUserWidget::UD原创 2020-07-13 10:47:05 · 3276 阅读 · 0 评论 -
UE4_C++编码中引用插件源码中的变量
这个问题之前解决过很多次,日后需要,方便查阅以上是项目的目录结构,有些东西涉及保密,VaRest 这个插件用来处理HTTP请求的,EPIC官方商城对这个插件也是免费提供。如果在c++项目中需要引用VaRest插件中的变量 VaRestJsonObject,怎么处理?首先在项目的xxxxxx.Build.cs 中开启插件引用,配置如下public class WHOverSizeScreen : ModuleRules{ public WHOverSizeScreen(ReadOnlyT.原创 2021-01-29 09:39:10 · 1196 阅读 · 4 评论 -
UE4_读取本地json文件并根据Key获取Val
本教程采用的是UE 4.25,如果版本不一样,可能食用崩溃涉及的知识结构结构体的定义文件的读取数据转换结构体属性和值的遍历UE4 C++ ->插件->蓝图函数库结构体的定义原创 2021-01-13 15:16:09 · 2089 阅读 · 0 评论 -
UE4_ 使用 ue4c++ 以Http方式与服务器交互
客户端与服务器的交互,在ue4 中提供了一个插件,可以以蓝图的方式使用该插件。参考链接本文提供的是基于UserWidget类,用c++代码实现。里边设计的有Http请求,Json数据处理,中文乱码解决。正文:新建一个ue4 c++ 工程,基于Userwidget c++类创建一个NetWidget。别忘了自己搞定一个番茄插件,不然头文件夹引用自己想办法解决。NetWidget.h 文件如下...原创 2019-10-30 20:04:14 · 13026 阅读 · 11 评论 -
UE4_读写内容到文本文件
1.新建一个c++ 文件,类型为BlueprintFunctionLibraryRWTextFile.h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Kismet/Blueprint...原创 2019-03-25 18:24:31 · 3275 阅读 · 1 评论 -
UE4_VS无法启动程序 Engine]\Intermedidate\Build\Unused\UE4.exe 系统找不到指定的文件
解决方法如下:原创 2018-12-28 09:29:22 · 5687 阅读 · 4 评论 -
UE4C++_关于函数的返回值问题
再UE4C++中关于函数的返回值问题:原创 2018-08-19 20:48:02 · 1775 阅读 · 0 评论 -
UE4C++_常用的两个Debug的方法
UE4_LOG(LogTemp,Warning,TEXT("StartOnConsole")); GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Black, TEXT("Begin123"));原创 2018-08-14 10:01:01 · 4410 阅读 · 0 评论