
UE4
文章平均质量分 51
yehong1225
天道酬勤,人道崇善,大道至简
展开
-
【UE4】UMG 生命周期
参考资料&原文链接GCCONF '20:UE4で作成するUIと最適化手法【UE4】使用UMG创建UI,了解内部机制及相应优化方法猫でも分かるUMGUMG widget构造初始化函数中获取其内部组件【UE4】UMG_自定义UMG并实时预览什么是生命周期以下摘自百度百科:生命周期就是指一个对象的生老病死。生命周期(Life Cycle)的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-转载 2021-11-19 08:05:38 · 3171 阅读 · 1 评论 -
【UE4基础】解决资源Migrate后蓝图的Parent变成了None的问题
在新项目的Config目录下找到DefaultEngine.ini配置文件,新增以下配置文件:[/Script/Engine.Engine]+ActiveGameNameRedirects=(OldGameName="Project1",NewGameName="/Script/Project2")+ActiveGameNameRedirects=(OldGameName="/Script/Project1",NewGameName="/Script/Project2")Project1是老项原创 2021-10-25 11:33:21 · 724 阅读 · 1 评论 -
【UE4基础】UE4 GEngine->GetWorld() == NULL
在Dedicated Server模式下,load玩Map后我想在我的C++代码中想获取GameInstance,通过GEngine->GetWorld()->GetGameInstance()语句获取,但是程序运行到这,出现段错误。然后尝试获取World,GEngine->GetWorld()发现程序运行出现段错误,也就是说GEngine->GetWorld() == NULL。经过一段搜索,在这篇文章(https://zhuanlan.zhihu.转载 2021-09-11 13:45:51 · 3588 阅读 · 0 评论 -
【UE4基础】全面理解UE4委托
转载自:全面理解UE4委托 - 可可西 - 博客园UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到通知,并进行相https://www.cnblogs.com/kekec/p/10678905.html总体UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系监听者通过将响应函数绑定到委转载 2021-09-10 16:50:02 · 2847 阅读 · 0 评论 -
【UE4基础】解决WidgetInteraction中的Debug Line打包后无法使用的问题
根本原因UE中的ENABLE_DRAW_DEBUG只在测试的时候是打开的,打包后就关闭了解决方案继承UWidgetInteractionComponent,将UWidgetInteractionComponent中的绘制圆点与线的部分移出来。第一步[项目名].Build.cs添加依赖PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });第二步创建绘制圆点与线的工具包(.原创 2021-09-10 08:11:09 · 1434 阅读 · 0 评论 -
【UE4基础】如何在C++中访问蓝图中的变量之方法二
接上篇,本篇使用第二种方法来访问UMG中Widget变量,主要使用的方法是添加标签:UPROPERTY(meta = (BindWidget))步骤第一步添加继承于UUserWidget的C++类头文件:SessionRow.h#pragma once#include "CoreMinimal.h"#include "Blueprint/UserWidget.h"#include "SessionRow.generated.h"/** * */UCLASS()原创 2021-09-10 07:26:49 · 1686 阅读 · 0 评论 -
【UE4基础】如何在C++中访问蓝图中的变量之方法一
背景很多时候,我们不想在蓝图类中写过于复杂的逻辑,希望能够在C++中处理复杂逻辑,但是有一些情况需要使用蓝图来做一些事,比如绘制菜单,用C++绘制菜单可能比较麻烦。那有没有一种方法可以在蓝图中创建菜单,然后在C++中访问这个菜单蓝图中的变量,然后处理复杂逻辑呢?答案是:有!!!步骤第一步创建菜单 WBP_HallMenu为了测试方便,这里就创建一个Button好了。第二步创建一个菜单逻辑代理的C++类:HallMenuHandler。HallMenuHandler.h.原创 2021-09-09 20:40:49 · 2429 阅读 · 0 评论 -
【UE4基础】UE4 垃圾回收
UE4GC简介UE4为我们搭建了一套UObject对象系统,并且加入了垃圾回收机制,使我们用C++进行游戏开发时更加方便,而且游戏本身也可以极大程度的避免了内存泄漏问题。UE4采用了标记-清扫垃圾回收方式,是一种经典的垃圾回收方式。一次垃圾回收分为两个阶段。第一阶段从一个根集合出发,遍历所有可达对象,遍历完成后就能标记出可达对象和不可达对象了,这个阶段会在一帧内完成。第二阶段会渐进式的清理这些不可达对象,因为不可达的对象将永远不能被访问到,所以可以分帧清理它们,避免一下子清理很多UObject,比如转载 2021-08-24 08:41:17 · 4352 阅读 · 0 评论 -
UE4内存检测工具使用
UE4提供了2个工具用于检测内存使用情况,这里记录下使用方法:1.MemReport命令:直接在UE4编辑器窗口的命令控制台上输入MemReport或MemReport -full即可得到内存分析报告。MemReport -full 会得到更加详细的分析报告。报告保存在Game/Saved/Profiling/MemReports目录下,文件格式为.memreport,使用文本编辑器就能打开查看。MemReport这个指令可以在引擎目录下的\Engine\Config\BaseEngine.in转载 2021-08-23 19:50:02 · 4974 阅读 · 0 评论 -
【UE4基础】蓝图使用Media Player播放自定义文件路径的Mp3文件
1、创建一个Media Player命名为:TheMediaPlayer。打开刚才创建的 TheMediaPlayer,勾选下Play on Open2、在Content目录下创建Movies文件夹,并将Mp3文件放进去注意:也可以创建其他文件夹,不过Movies文件夹会默认打进包中,如果不是Movies文件夹,则不会默认打进包,需要在打包配置中配置一下(可参考上一篇:https://blog.youkuaiyun.com/yekong1225/article/details/11977..原创 2021-08-19 14:36:46 · 3183 阅读 · 0 评论 -
【UE4基础】将自定义文件(非Assert)打包进Android包中
背景近期做的项目中需要在代码中读取歌曲、图片等文件,打包Android应用后运行时发现读取不到在项目中的那些文件。解决方案在项目设置中将非Assert文件目录加入到配置中。Project -> Packaging ->Additional Non-Asset Directories to Package 中添加Content下的自定义目录。C++ 代码中读取: // 读取所有的Track TArray<FString> ...原创 2021-08-18 11:29:44 · 1486 阅读 · 2 评论 -
简单adb 命令抓Android app 闪退日志
系统:Windows1.手机连上电脑,打开开发者选项,打开调试模式2.打开cmd,输入命令adb devices查看设备连接成功下面进入正题:查看手机的所有日志 adb logcat 只获取该应用的日志adb logcat | findstr 应用包名开始抓取日志并保存到D盘的crash.txtadb logcat >D:\crash.txtctrl +C 停止抓取辅助命令:清空日志:clsctrl +C停止日志,输入其他命令ctrl +F 搜索fo.转载 2021-08-18 09:28:20 · 2525 阅读 · 0 评论 -
【UE基础】创建PLUGINS
如何使代码模块化,使用Plugins可能是一种比较好的方式,下面通过一个例子,讲一讲如何创建和使用Plugins。一、创建C++工程TestPlugins:从菜单中选择"Edit"->"Plugins",会弹出如下窗口:点出“New Plgin”,在弹出的窗口中选中“Blank”,然后输入“Shape”,点出“Create Plugin”后,会创建一个名为“Shape”的plugin:工程的目录结构如下:从上图可以看到,Shape Plugin的代码目录和Test转载 2021-08-17 18:19:47 · 2299 阅读 · 1 评论 -
【UE基础】UE4导入第三方库_4.25/4.26
对于所有第三方库都应该先加入对头文件目录的包含:在模块的Build.cs文件中,加入对应的第三方库的头文件包含路径:PublicIncludePaths.Add(path);//包含目录中的头文件并公开到外部模块 PrivateIncludePaths.Add(Path);//包含目录中的头文件并不公开到外部模块 对于插件中的模块:PublicIncludePaths和PrivateIncludePaths可以接受特殊字符串开头的字符串:$(ModuleD...转载 2021-08-17 18:11:51 · 4482 阅读 · 0 评论 -
【UE4基础】FString字符串拼接-Append的坑
使用 “+” 来进行字符串拼接,使用Append会出现多个“\0”的情况。推荐:FString imgPath = "hello.jpg";FString fullImgPath = FPaths::ProjectContentDir() + imgPath;不推荐:FString imgPath = "hello.jpg";FString fullImgPath = FPaths::ProjectContentDir().Append(imgPath);...原创 2021-08-16 09:59:54 · 5844 阅读 · 0 评论 -
【UE4基础】使用Visual Studio调试C++代码
1、先设置 DebugGame Editor2、右键项目,选择Debug -> Start New Instance原创 2021-08-15 18:16:35 · 1621 阅读 · 0 评论 -
【UE4基础】UE4 C++ 创建一个结构体Struct
创建一个结构体用于存储数据结构,如果你需要实现更复杂的逻辑,请使用class通常创建一个类需要在UE编辑器中新增,而结构体可以在VS中添加1,右键你的项目,选择“添加->新建项”,在对话框选择"头文件(.h)",设定好名称及存放路径即可2,添加头文件#include "CoreMinimal.h"#include "结构体文件名.generated.h"3,编写结构体主体/* 为了让你的结构体可以被蓝图访问 */USTRUCT(BlueprintType)struct转载 2021-08-13 11:34:21 · 5472 阅读 · 2 评论 -
【UE4基础】使用C++解析JSON字符串
1、在[Project].Build.cs文件中添加Module添加Json这个modulePublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "Json"});2、解析 FString jsonStr; bool result = FFileHelper::LoadFileToString(jsonStr, fullPath.GetCh原创 2021-08-12 16:49:30 · 1258 阅读 · 0 评论 -
【UE4基础】C++文件管理
简介UE4文件管理主要涉及到标准目录的获取,文件及目录的创建、删除、读取,文件内容的读写。涉及到的主要类有:Paths、IFileManager、FFileHelper。UE4标准目录的获取(Paths)项目相关的目录...原创 2021-08-12 16:43:09 · 1576 阅读 · 1 评论 -
【UE4基础】对象创建与资源获取
一、对象与销毁1. 纯C++类的创建与销毁创建:对于纯C++类(这里指非继承自UObject的类,一般以F开头),可以通过new来创建对象,并使用TSharedPtr和TSharedRef来管理对象。TSharedPtr<MyClass> MyClassPtr = MakeShareable(new MyClass());销毁:使用智能指针的计数器方法,自动销毁2. UObject及其子类创建与销毁创建:继承自UObject但不继承自Actor的类可以通过NewO...转载 2021-08-12 08:51:20 · 1175 阅读 · 0 评论