自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

执手画眉弯的博客

简单写一些UE4学习的心得,欢迎大家批评指正!

  • 博客(53)
  • 资源 (2)
  • 收藏
  • 关注

原创 UE 解决byte在C17中冲突的问题

UE4解决byte在C17中冲突的问题

2022-12-05 13:51:02 306 1

原创 Protobuf 优化长度 产生的陷阱

在解析Protobuf消息体结构时候,遇到0长度的也应该进行解析,否则有可能会丢失消息。

2022-12-05 13:48:43 678

原创 UE4 加载地图后的时序

UE4 加载地图后的时序bool UEngine::LoadMap( FWorldContext& WorldContext, FURL URL, class UPendingNetGame* Pending, FString& Error ){ ... // Prime texture streaming. IStreamingManager::Get().NotifyLevelChange(); if (GEngine && GEngine->XR

2021-06-09 10:35:55 904

原创 UE4 声音模块

UE4 声音模块该文主要简单讲述UE4 声音模块的导入声音ImportSound,声音资源SoundCue,声音编辑器SoundEditor,音效类SoundClass,音效类混音SoundClassMix,声音衰减SoundAttenuation,声音并发SoundConcurrency,播放声音PlaySound。导入声音 ImportSound虚幻引擎当前可导入未压缩、小端字节、16位的Wave(WAV)文件(支持各种采样率,但推荐采样率为44.1 kHz或22.05 kHz)。在内部,UE4

2021-06-05 18:30:16 1973 1

原创 2021-06-03

UE4 加载地图后的时序bool UEngine::LoadMap( FWorldContext& WorldContext, FURL URL, class UPendingNetGame* Pending, FString& Error ){ ... // Prime texture streaming. IStreamingManager::Get().NotifyLevelChange(); if (GEngine && GEngine->XR

2021-06-03 09:31:14 161

原创 UE4 读取ini文件 小记

UE4 读取非config目录的ini配置时的注意事项当我们把一些自定义的ini文件放在类似content下的目录时,在对它进行读取的时候,会跳转到获取String的位置,如下bool FConfigCacheIni::GetString( const TCHAR* Section, const TCHAR* Key, FString& Value, const FString& Filename ){ FRemoteConfig::Get()->FinishRead(*Fi

2021-05-20 14:08:48 1457

原创 UE使用sqlite3数据库close失败问题

在ue4中调用sqlite3数据库,在执行查询语句时候,返回的database数据指针变量是new出来的变量地址,如果使用结束不进行delete操作的话,除了引起内存泄露外,还会导致close时候,返回值为5,也就是busy状态,造成关闭失败,下次重新链接数据库时候也会失败。...

2021-04-08 19:40:34 517

原创 UE4函数反射 C++与蓝图的联系

UE4 函数反射 C++与蓝图的联系UFUNCTION的类型简介先了解UFUNCTION声明的类型:namespace UF{ // valid keywords for the UFUNCTION and UDELEGATE macros enum { /// This function is designed to be overridden by a blueprint. Do not provide a body for this function; /// the aut

2021-03-05 17:18:49 432

原创 UE4下载与存储图片

UE4 从网络端下载图片并且缓存到本地从网络端下载一个图片,并且在UI上显示出来,然后再缓存到本地文件中,方便下次使用。下载图片UE4官方提供了一个异步任务类,专门处理下载图片的需求。DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDownloadImageDelegate, UTexture2DDynamic*, Texture);UCLASS()class UMG_API UAsyncTaskDownloadImage : public UBlue

2021-02-26 14:54:49 4167 3

转载 UE4的多线程和tick

文章目录 简介常用方法TickTimerManagerAsyncTaskAsyncFAutoDeleteAsyncTaskFAsyncTaskFRunnable 一些新发现FTickableGameObject 线程的同步FCriticalSection 简介 多线程在任何语言中都是不可或缺的,意义重大的,因此,能熟练使用多线程往往是一件能让工作事半功倍的事情。那么做为强大的UE4引擎,又给了我们什么支持呢?很多人可能知道runable,知道tick但是这都只是UE4多线程的一部分..

2020-11-14 16:11:45 2079

原创 UE4小技巧之官方Snippet导入

UE4 官方Snippet导入Visual Studio Snippets for Unreal Engine C++ ProjectsHow to install snippets?How to use snippets?UE4 引擎自带了一部分扩展部件在Engine/Extras/ 目录下,平时最常用的是UnrealVS的Vistual Studio插件,另外还有一个比较实用的就是VisualStudioSnippets。在 Engine/Extras/VisualStudioSnippets/ 文

2020-11-09 17:36:55 514

原创 算法学习 期末总结

数据结构一维:基础:数组 vector(string),链表 linked list高级:栈 stack,队列 queue,双端队列 deque,集合 set, 映射 map, 优先队列 priority_queue二维:基础:树 tree, 图 graph高级: 二叉搜索树 binary search tree(red-black tree, AVL),堆heap,并查集 disjoint set, 字典树 Trie特殊:位运算 Bitwise, 布隆过滤器 BloomFi

2020-08-31 19:29:13 152

原创 算法学习第9周 高级动态规划 字符串算法

高级动态规划算法感触人肉递归低效,很累。找到最近最简方法,将其拆解位可重复解决的问题。数学归纳法思维。动态规划 Dynamic ProgrammingSimplifying a complicated problem by breaking it down into simpler sub-problemsDivide & Conquer + Optimal substructure顺推形式: 动态递推打家劫舍问题dp[i] 状态定义: max $ of robbing

2020-08-23 21:59:44 568

原创 算法学习第八周 位运算 布隆过滤器和LRU缓存 排序算法

位运算位运算符含义运算符说明按位或1双目,只要有一个为1则为1,否则为0按位与&双目,两个都为1则为1,否则为0按位取反~单目, 每位0变1,1变0按位异或^双目,相同为0,不同为1异或特点相同为0, 不同为1,也可用“不进位加法”来理解。x ^ 0 = xx ^ 1s = ~x //注意 1s = ~0 相当于每位都为1x ^ (~x) = 1sx ^ x = 0c = a ^ b => a ^ c = b ,

2020-08-16 22:18:29 195

原创 算法学习第七周 字典树和并查集,高级搜索,红黑树和AVL树

字典树和并查集字典树字典树,即Trie树,又称单词查找树或者键树,是一种树形结构。典型应用是用于统计或者排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计,或者屏蔽词字库对比等。字典树优点:最大限度的减少无畏的字符串比较,查询效率比哈希表高。Trie树的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。字典树的实现struct Node{ char c; bool end; Node* next[26] =

2020-08-08 23:06:05 397

原创 C++ 11 default与delete函数

C++ 类型的基础函数在C++中,声明自定义的类型之后,编译器会默认生成一些成员函数,这些函数被称为默认函数。其中包括(1)(默认)构造函数(2)拷贝构造函数(3)拷贝赋值运算符(4)移动构造函数(5)移动赋值运算符(6)析构函数另外,编译器还会默认生成一些操作符函数,包括(7)operator ,(8)operator &(9)operator &&(10)operator *(11)operator ->(12)operator ->*(

2020-08-07 14:36:09 294

原创 算法学习第六周 动态规划

动态规划从分治,回溯,递归一直到动态规划,本质上算法思维没有大的区别,都是把复杂问题分解为它的子问题,同时寻找它的重复性。感触人肉递归低效,而且很累找到最近最简方法,将其拆分为可重复解决的问题。数学归纳思维。(先将基本条件想清楚,比如n = 1,n = 2时候是什么样,n怎么推导n + 1)。动态规划的定义Simplifying a complicated problem by breaking it down into simpler sub-problems.(in a recurs

2020-08-02 15:31:59 138

原创 算法学习第四周 贪心算法与二分查找

贪心算法贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好的或最优的算法。贪心算法与动态规划的不同在于它对于每个子问题的解决方案都做出选择,不能回退。动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。贪心法可以解决一些最优化问题,如:求图中的最小生成树,求哈夫曼编码等。然而对于工程和生活中的问题,贪心法一般不能得到我们所要求的答案。一旦一个问题可以通过贪心法来解决,那么贪心法一般是解决这个问题的最好办法。由于贪心法的高效性以及其所求的

2020-07-19 17:17:31 291

原创 算法学习第三周 分治与回溯

分治分治和回溯本身就是一种比较特殊的递归,在分析问题的解决方法时候,首先找问题的重复性,某些情况下,问题可能需要拆分成多个小问题来实现,然后最后结果是多个小问题组合起来形成的,这时候就需要用到分治的思想。分治类似公司自顶而下管理和工作的架构,分析问题,拆分子问题的方法主要是多加练习,根据解题的经验来进行拆分和组合。分治的代码模板void divide_conquer(problem, param1, param2, ...): // recursion terminator if pr

2020-07-12 15:42:41 140

原创 算法学习第二周总结

算法学习总结Hash、树、堆HashMap树HeapHash、树、堆本周主要学习了hashmap,映射,集合,树,heap以及图相关的基础知识,以及对应的相关算法。HashMap关于hash的主要内容:1. Hash表是根据关键码值(key)进行直接访问的数据结构,通过hash函数把key映射到表中一个位置来进行访问,查找元素的时间复杂度为O(1)。2. hash映射函数也叫散列函数,存放记录的数组叫做哈希表。3. hash表的做法,就是把key值通过设定的hash函数转换成一个int数字,然

2020-07-04 22:09:21 152

原创 算法学习数组,链表,栈,队列总结

数组数组基本上属于使用最多的一种数据结构,因为其连续的内存分布,使得访问和查找等方面都可以做到O(1)时间复杂度,缺点就在添加和删除操作上,因为需要保持内存的连续性,需要对后续的元素进行移动,所以该部分算法为O(N)。数组在访问方面,使用下标或者迭代器基本上没有差别,唯一问题可能在使用迭代器会显得比较高大上一些而已。关于本周练习的数组方面操作: 删除排序数组中的重复项: //使用stl内置函数实现 int removeDuplicates(vector<int>& ..

2020-06-28 14:02:57 225

原创 UE4 相对坐标转世界坐标

UE4 Relative Location To World Location相对坐标转世界坐标世界坐标转相对坐标相对坐标转世界坐标//For example, if T was an object's transform, this would transform a position from local space to world space.FVector UKismetMathLibrary::TransformLocation(const FTransform& T, FVect

2020-06-23 11:47:30 6511

原创 UE4 MapCheck: Error: WorldSettings_1 Maps need lighting rebuilt

如果使用源码版本的UE4引擎,经常会出现需要重新构建光照的红字提示,然后你去按照提示构建光照,就会报错,继续给你弹出该提示。其实这时候要相信自己,它仅仅是因为使用源码版本构建引擎的时候,默认不会编译UnrealLightMass这个程序,而构建光照刚好就是使用的该程序,你只需要在VS里面的Programs下边选中UnrealLightMass这个工程,重新编译就能解决问题。 同理,其实你还能发现很多源码版本默认没有编译的程序,UnrealInsights, Unrea...

2020-05-20 14:33:32 3688 4

原创 UE4 Build Configuration

UE4编译配置相关,可以修改UBT使用的vs版本,windows sdk版本,msvc版本等等。https://docs.unrealengine.com/en-US/Programming/BuildTools/UnrealBuildTool/BuildConfiguration/index.html举个栗子,比如你想指定该UE4引擎使用的msvc和sdk版本修改Engine/...

2019-10-30 10:40:07 1974

原创 UE4 接入Aliyun SDK

1. 首先https://help.aliyun.com/document_detail/106216.html?spm=a2c4g.11186623.6.921.45171717JSWP5D 下载阿里云sdk源码,按照步骤编译出alibabacloud-oss-cpp-sdk.lib2. 在UE工程文件夹下创建ThirdParty/Aliyun/include文件夹,然后把阿里云源码下的sd...

2019-10-30 09:38:02 2441 15

原创 UE4 截图处理相关内容

1. 绑定截图回调FScreenshotRequest::OnScreenshotRequestProcessed().AddUObject(this, &UMyWidget::SetExportTexture); //本文由CSDN博主执手画眉弯原创,未经允许不得转载!绑定回调后,截图成功处理后回调到该函数2. 调用截图功能 FScreenshotRequest:...

2019-09-06 11:09:33 1112

原创 UE4 如何判定一个点是否在屏幕范围内

参考官方UGameplayStatics::ProjectWorldToScreen()函数的方法,进行一些修改调整。用来判定三维世界中一个点是否在屏幕范围内。bool AMyActor::IsInScrrenViewport(const FVector& WorldPosition){ APlayerController *Player = UGameplayStatics::...

2019-09-06 10:57:08 3714 2

原创 UE4 遮挡剔除文档

UE4 遮挡剔除文档Mark一下,方便以后查看。https://docs.unrealengine.com/zh-CN/Engine/Rendering/VisibilityCulling/index.html虚幻引擎4(UE4)提供了可视性和遮挡剔除方法。这些剔除方法用于优化游戏性能。每种方法都可以通过设置是否应绘制到屏幕上来减少关卡中的可见Actor数量。部分方法(如视图视锥和硬件遮挡...

2019-09-06 10:43:20 4210

原创 UE4 Spline组件C++样例

#pragma once #include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Components/SplineMeshComponent.h"#include "MySplineActor.generated.h" /** * */UCLASS()class MYRENDERAPP_API A...

2019-09-06 10:26:50 3116 2

原创 UE4 URL Scheme 从浏览器调起App

UE4的移动平台应用通过调用URL Scheme从网页启动App1. Android在Project Settting -> Android -> Advanced APK Packaging -> EXtra Setting for <activity> section (\n to separate lines)中添加<intent-fil...

2019-05-20 11:33:23 1438 1

原创 UE4 Android打包一些后处理无法支持问题

在UE4开发Android平台App时候,因为渲染器的原因导致一些后处理效果无法正常显示,但是其实目前大部分中高端以上的机型都支持Vulkan渲染,我们可以在UE4里把这项功能打开以支持对应的后处理效果。(在我们项目中就解决了雾特效无法正常显示的问题。) 附上官方文档传送门http://api.unrealengine.com/CHN/Platforms/Android/...

2019-04-16 10:28:33 1480

原创 UE4 动态加载资源,运行内存优化

UE4中可能使用到DataAsset或者存储相关模型数据,基于UE4的运行机制,当前地图包含的所有资源都会在进入该地图时候统一全部加载,这就导致了如果我们在这个地图中只使用到了一部分DataAsset中的数据,但是依然会把其中所有的数据全部加载进来,模型,贴图,材质等,无端增加了许多内存开销。 但是其实UE4本身还给出了另外一种方法。比如用 TSoftObjectPt...

2019-04-15 18:09:09 4593 1

原创 UE4 SizeBox的妙用

SizeBox是一个很有意思的控件,下边通过创建一个自变化宽高的文本输入框来举例讲述它的作用。当然自变化宽高的文本框可以用TextBox(Multi-line)即可实现(C++中为UMultiLineEditableTextBox类型),这里只是举例说明而已。 1.文字为EditTextBox(Multi-line),后边黑色背景为Image控件,把Ima...

2019-02-20 11:21:10 5486

原创 UE4 安卓触摸事件相关问题

UE4在安卓端获取输入信息时候,似乎会把触摸事件和PC端的鼠标事件弄混在一起,导致出现一些奇怪的问题。1. /* 安卓端会把触摸事件读取成PC端的鼠标事件,因为Turn和LookUp在PC端开发时候一般都绑定在鼠标X轴,Y轴上,* 所以这里要对安卓端做一些特殊处理。*/#if !PLATFORM_ANDROID PlayerInputComponent->BindAx...

2019-02-11 15:17:12 5242

原创 UE4 列表下拉刷新功能

1.需要修改引擎的 SScrollBar.cpp文件 197行bool SScrollBar::IsNeeded() const{ //Alter 让列表一直处于可以滑动状态 //return Track-&gt;IsNeeded(); return true;} 原来是只有列表中元素过量时候才可以滑动,所以这里需要修改。 2. 需要修改引擎的 S...

2019-02-11 15:14:45 2219

原创 UE4 制作UI Button缩放效果

      UE4对于按钮本身按下去状态的padding只能让按钮内部元素产生位移,并不能真正的缩放,所以使用Animation来实现这个效果比较好。通过动画实现时候也有两种选择,一种是调节padding大小来实现,这种方法对于按钮内部元素的锚点会产生一定的变化,不太通用,使用起来相对麻烦,第二种是直接调节Transform中的Scale大小来实现,这种就相对简单而且效果也OK。     在下...

2018-09-11 09:57:08 7074 2

原创 UE4 ScrollBox 中的 Button

在 Scroll Box中如果子元素为Button,则应该修改Button的Touch Method类型,从原始的Down and Up 修改为 Precise Tap。不然会因为按钮消息的截断,导致滑动列表不能接收到鼠标左键或者手机中的屏幕点击滑动消息。 顺便附带多排多列滑动列表做法在Scroll Box中添加Wrap Box,然后以Wrap Box为父控件,添加子控件元素。...

2018-09-10 19:28:25 3924 5

原创 关于DestoryComponent崩溃问题

前段时间写了一个方便配置各种特效,音效的StaticMeshActor的工具,其中生成特效时候使用到了SpawnEmitterAtLocation函数,在处理一些永久特效延迟一定时间销毁时候使用了DestoryComponent函数,因为这个暴露出来了一个问题。程序会有一定几率崩溃在DestoryComponent函数里面,但是也不是必现的,这时候就有些蛋疼了。          后来发现其实

2017-09-11 10:12:14 876

原创 UnrealVS插件使用简介(UBT编译,UE4热更新)

介绍UnrealVS插件的使用,方便程序猿在做UE4项目时候的UBT编译与热更新问题。

2017-08-23 17:43:36 8024

原创 UE4 Expose On Spawn 的使用

在UE4中,当我们在spawnactor时候想直接给产生出来的actor赋予一些变量的初始值时候,就需要使用到Expose On Spawn这个功能。根据使用环境和位置,分下边几种情况。 1. 在蓝图中调用SpawnActor产生一个蓝图类的Actor 给要产生的目标actor添加一个变量,勾选上 Expo...

2017-08-04 14:13:55 4337

运维工具(守护进程客户端)

使用VS2015开发的MFC运维工具,网络部分使用了CSocket+Protobuf的组合,主要与前一个上传的守护进程服务器端连接使用,可以远程监视和控制服务器上的守护进程。

2017-05-24

守护进程服务器端

使用VS2015开发的MFC服务器守护进程工具,网络传输部分使用CSocket+ProtoBuf的组合。该程序可以单独使用,也可以作为服务器端使用,配合下一个上传的 运维工具(守护进程客户端)。

2017-05-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除