自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 UE4.27打包安卓报错

在第一次打包时,报错ERROR: cmd.exe failed with args /c "D:\Project\test1\Intermediate\Android\armv7\gradle\rungradle.bat" :app:assembleDebug,将压缩包放到C:\Users\40994\.gradle\wrapper\dists\gradle-6.1.1-all\cfmwm155h49vnt3hynmlrsdst下,然后将文件解压,然后再回到UE去重新打包即可。

2025-01-28 18:19:14 1018

原创 UEC++学习(十七)利用SceneCaptureComponent2d进行截图

最近有个需求是需要将场景中的actor进行截图,并且将截图保存成png,png中需要将场景背景忽略掉,只显示特定的actor。这里是通过SceneCapture2d组件捕捉场景后,将背景的alpha通道设置为0,实现背景透明的功能。

2024-09-09 11:36:16 1488 1

原创 UEC++学习(十六)变量添加中文注释、ui设置中文文本

在C++ 项目中创建变量,并在蓝图中显示变量的英文名同时附带中文注释,可以使用UPROPERTY的ToolTip元数据属性来实现。

2024-08-13 15:42:03 472

原创 将UEC++项目转码成UTF-8

如果文件不多的话,可以手动一个一个进行修改。添加 “高级保存选项”手动改为UTF-8。使用editorconfig文件,统一编码问题。其他的已有文件转码的话,可以用脚本来实现

2024-08-13 11:09:14 843

原创 VaRest插件常用节点以及Http请求数据

(1)Construct Json Object:构建json对象(2)Decode Json:解析json 将string转换为json(3)Encode json:将json转换为string(4)Get String Field:通过Key拿到json里的value,还有int、float(5)Get Object Array Field:获取json中的数组数据。

2024-07-01 16:16:41 978

原创 UEC++学习(十五)创建、查找、加入会话

基于上篇配置steam在线子系统之后,在Character.h中声明一个会话创建完成时的委托以及回调函数。在Character.cpp的构造函数中绑定委托添加创建会话逻辑,将结果打印到屏幕OnlineSessionInterface->GetNamedSession(NAME_GameSession):获取会话OnlineSessionInterface->DestroySession(NAME_GameSession):销毁会话。

2024-05-15 11:10:34 1078 1

原创 UEC++学习(十四)新项目配置Steam为在线子系统

在Character.cpp的构造函数中,配置为使用steam作为在线子系统,并通过AddOnScreenDebugMessage打印名字在屏幕上。在项目的配置文件中添加需要使用的模块,OnlineSubsystemSteam和OnlineSubsystem 用于链接steam子系统。新建一个第三人称的项目,启用插件OnlineSubsystemSteam。在项目的DefaultEngin.ini文件中添加下面设置。在Character.h中添加一个指向在线会话界面的指针。这个设置在官方文档中。

2024-05-06 11:27:19 337

原创 C++学习(六)智能指针

在C++中,动态内存的管理是通过new和delete运算符来完成的,动态内存管理容易出现两个问题:一个是忘记释放内存,会导致内存泄露;一个是在还有指针引用的情况下就释放内存,会导致产生引用非法内存的指针。而智能指针就是用来帮我们管理动态分配的内存,能够避免内存泄露。智能指针本质上是一个类模板,通过重载运算符*、->,使智能指针能够和普通指针一样使用。智能指针不是指针,是一个管理指针的类,用来存储指向动态分配对象的指针,负责自动释放动态分配的对象,防止堆内存泄漏;

2024-02-27 14:09:06 776

原创 C++学习(五)const关键字

(1)只要成员函数不修改调用对象,就应该将其声明为const,这样既可以避免调用对象被修改,而且普通对象和const对象都可以调用。如果需要在const成员函数中修改成员变量的值的话,需要在成员变量前面加上mutable关键字(2)const对象只能调用const成员函数,不能调用非const成员函数;非const对象两者都可以调用。(3)const成员函数只能调用类的const成员函数,不能调用非const成员函数;非const成员函数两者都可以调用。

2024-02-26 11:25:38 739

原创 C++学习(四)静态static

static是C和C++中常用的修饰符,被用于控制变量的存储方式和可见性。(1)static修饰的变量存储在静态数据区,包括全局静态变量和局部静态变量,都在全局数据区分配内存。(2)static修饰全局变量时,会将变量的可见范围限制在编译单元中,进行文件隔离,只能在本文件中访问,外部文件无法访问,即使通过extern外部声明也不行,除非include变量所在的文件。(3)static修饰函数时,这个函数只能在本文件调用,不能被其他文件调用。

2024-02-22 18:02:31 1637

原创 C++学习(三)类和结构体

类是对数据和功能组合在一起的一种方法。例如在一个游戏中,我们可能需要一些代表角色的东西,比如角色的属性、移动等,所有的这些数据都需要存储在某个地方,这个地方就是类。默认情况下一个类的所有东西都是私有的,只有类中的函数才能访问这些变量,类中的函数被称为方法。

2024-02-22 14:45:35 202

原创 C++学习(二)指针、引用

对于计算机来说,内存就是一切。在编程中最重要的一件事就是内存,当编写一个应用程序并启动它时,所有的程序都被载入到内存中,所有的指令告诉计算机在你写的代码中要做什么,所有的这些都被加载到内存中,CPU就是这样访问你的程序并开始执行它的指令的。当你创建一个变量,当你从磁盘中加载数据时,所有的东西都存储在内存中,如果没有内存就什么也做不了。而指针对于管理和操纵内存非常重要。指针是一个整数,一种存储内存地址的数字。

2024-02-19 14:55:27 252

原创 C++学习(一)编译器、链接器、函数

编译器在生成obj时,首先需要预处理我们的代码,意味着所有的预处理器语句都会先处理,一旦代码被预处理了,接下来将进行记号化和解析,把C++语言整理成编译器能够理解和推理的格式。编译器的工作就是转换我们所有的代码,转换成常量数据或指令,一旦编译器创建了这个抽象语法树,它可以开始实际生成代码,也就是CPU将执行的代码。我们常用的预处理语句有include、if ifdef、pragma语句。#include语句指定了想要包含的文件,预处理器打开这个文件,阅读它的所有内容,然后粘贴到你写的文件中。

2024-02-05 15:21:05 342

原创 UEC++学习(十三)Ai服务AI Service / AI装饰 AI Decorator

服务是可以添加到行为树节点的特殊类,具有自己的Tick功能,可以在里面写游戏逻辑,并且还能够更改黑板上的键这里主要是对UEC++学习(十一)和(十二)中的AI随机移动和追击玩家逻辑进行优化。如果不感兴趣的话可以直接跳转到第二步创建BTService类,命名为STUFindEnemyService。

2024-02-02 11:32:49 699

原创 UEC++学习(十二)AI感知组件AIPerceptionComponent

创建AIPerceptionComponent类,命名为STUAIPerceptionComponent在AIController.h中创建感知组件变量在构造函数中对其初始化,SetPerceptionComponet:自带函数,对组件赋值在蓝图中 AI Sight Config用于视野感知。

2024-02-01 13:55:26 779 1

原创 UEC++学习(十一)AI行为树

首先创建AI类和AIController类,这里的Ai是直接继承的Character类,在AI类中添加一个行为树变量上面操作在蓝图中,因为这里的ai暂时是直接放置在level的然后创建一个行为树蓝图和黑板将C++中创建的BehaviorTreeAsset变量赋值然后在AIController,h中重载OnPossess函数,这个函数用于AI被拥有时调用在AIController.cpp对应蓝图函数;

2024-01-31 14:52:33 838

原创 UEC++学习(十)武器添加开火特效

在武器类中添加NiagaraSystem和NiagaraComponent组件两个变量,在Cpp中。

2024-01-30 11:35:17 977 1

原创 黑白相机效果

在玩家死亡后切换到旁观者视角,同时相机变成灰色。

2024-01-26 17:51:02 125 1

原创 UEC++学习(九)相机抖动

在蓝图中创建一个抖动相机蓝图类MatineeCameraShake。StartCameraShake():播放抖动函数。GetController():获取控制器。GetOwner():获取组件的owner。在蓝图中设置相机对应的抖动参数。添加一个相机抖动变量。

2024-01-26 17:33:59 419 1

原创 UEC++学习(八)Actor添加球形碰撞体

在.h文件中定义一个USphereComponent组件 ,NotifyActorBeginOverlap是用于重载。SetCollisionResponseToAllChannels:设置所有通道的碰撞响应类型。SetCollisionEnabled:设置碰撞启用类型。SetRootComponent:设置根组件。InitSphereRadius:初始范围。

2024-01-16 15:09:48 656 1

原创 UEC++学习(七)之动画通知

获取到动画的所有通知Notifies,这是一个AnimNotifyEvent数组类型,NotifyEvent.Notufy获取通知,强制转换为需要的类,然后绑定委托。在需要播放动画的类中,这里创建了一个动画蒙太奇,用于在蓝图中修改。在父类中有个Notify函数用于执行,创建一个委托用于触发。创建一个基于AnimNotify的类。Broadcast:执行委托。在蓝图中添加这个通知就行。

2023-12-25 16:37:16 731

原创 Git常用命令总结之 创建分支,切换,pull,push等

git branch。

2023-12-25 14:28:08 883

原创 UE 控制动画骨骼位置 FABRIK

参数:EffectorTransform:末端效应器的位置,即需要移动的目标位置。EffectTransformSpace:执行器变换空间,一般是使用骨骼空间。示例:让角色从双手拿武器变成一只手拿武器,另外一只手放到下巴位置。Precision:精度参数,用于控制IK求解答精度程度。TipBone:末端骨骼,即IK链的结束骨骼。RootBone:根骨骼,即IK链的起始骨骼。FABRIK用于实现逆向运动学(IK)效果。EffectorTarget:目标位置。

2023-12-20 10:38:08 829 1

原创 UE 角色动画添加偏移

在动画蓝图中通过GetBaseAimRatation获取动画的旋转,使用DrawDebugLine绘制调试射线查看。将动画序列的动画类型改为网格体空间,然后是基于Idle动画。添加不同朝向对应的动画序列。最后在事件图表中输出即可。

2023-12-19 16:47:46 480 1

原创 UEC++学习(六)之 武器发射射线,发射子弹,造成伤害

在武器类中GetSocketTransform(socketname):通过插槽名获取transformSocketTransform.GetLocation():获取变换的locationSocketTransform.GetRotation().GetForwardVector():获取向前向量DrawDebugLine:调试射线:参数;World,开始位置,结束位置,颜色,判断射线是否永久绘制(默认false),存在时间,绘制深度的顺序,粗细FHitResult:用于接收检测信息的结构体。

2023-12-19 15:49:51 861

原创 UEC++学习(五)之 绘制十字准星,组件拥有者不可见等

创建HUD类,需要重载DrawHUD()函数;DrawHUD():负责渲染,每一帧执行,可以在此函数中绘制线条TInterval:模板函数,用于表示一个区间,包含了最小和最大值,可以用于判断两个区间是否重叠,合并两个区间等,比如Center.Contains(X),检查X是否在区间FLinearColor::Green 绿色DrawLine:用于绘制线,参数:起始X,起始Y,终点X,终点Y,线颜色,线粗细GameMode覆盖新的HUD类。

2023-12-18 13:46:50 709

原创 UEC++学习(四)之 角色添加武器

AttachToComponent:添加到组件,参数:要附加到的父类,旋转,插槽名。可以在插槽中添加武器资产用于预览:这一步是用于自己调整武器相对于插槽的旋转值。GetWorld()->SpawnActor():生成actor。在角色类中创建一个武器类:TSubclassof()在角色骨骼网格体中创建一个插槽Socket用于绑定武器。在WeaponClass中创建骨骼网格体。GetMesh():获取骨骼网格体。

2023-12-15 17:22:23 664

原创 UEC++学习(三)之 角色死亡,切换旁观者类,高处掉血Landed等

使用的是非动态多播声明两个仅供C++使用的委托:委托要用F开头创建这两个委托变量在血量减少时执行委托:Broadcast()在角色类中订阅绑定这两个委托创建蒙太奇动画:UAnimMontage播放蒙太奇:PlayAnimMontage()关闭蒙太奇的自动混出,不然播放结束后会回到初始状态。

2023-12-14 18:15:50 699

原创 UE C++学习(二)之 委托,Gamemode基础类,不同Pawn切换,映射,伤害TakeDamage等

(3)DECLARE_DYNAMIC_MULTICAST_DELEGATE:多播,分别用蓝图的形式编写,可以编写多个客户端,也可以使用C++(1)DELARE_DELEGATE:是最简单的版本,带有一个参数DelegateName 是我们可以分配给委托的名称,只能在C++中使用。(2)DECLARE_DYNAMIC_DELEGATE:这个委托的不同之处在于,可以做蓝图中使用。委托可以存储对 具有任意类的特定签名的方法 的引用,并在必要时调用此方法。

2023-09-01 15:17:41 518

原创 UE C++学习(一)之 Log,创建,定时器,UFUNCTION等

使用DEFINE_LOG_STATIC//自定义一个log分类:LogCustom。

2023-08-18 16:03:09 1548 1

原创 使用Git 管理UE项目

8.用git status 查看需要提交的文件,使用git add XXX(需要提交到缓冲区的文件名) \ 使用git add . (添加全部) 将文件提交到缓冲区,使用git commit -m "自定义的提交信息"将缓冲区的内容提交到本地仓库,使用git push将内容推送到远端。3.选择下载的git路径,一般在安装GIT 的Bin 下的git.exe,然后用Git 初始化项目。7.将之前创建的ue项目复制到本地仓库中,也就是刚刚创建的clone文件夹。显示下面图标说明设置完成了。

2023-08-05 19:27:27 1929 1

原创 UE5实现像素流送

7.打包完成之后,找到打包项目的那个文件夹,创建一个.exe的快捷方式后,右键快捷方式找到属性,在这个位置后面加上 -AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888 后点击确定即可。(2)-PixelStreamingIP=localhost:像素流送的IP地址,localhost表示的是本地地址,如果需要其他设备(手机)控制UE程序的话,需要修改这个地址。脚本用于Windows,将相应的。)插件,启用之后,点击立即重启。

2023-08-03 16:52:11 2339

原创 UE5C++编译遇到MSB3073报错

这种情况可能是配置不符合,之前在网上找到资料,说是要删除引擎源码目录下的“Engine\Intermediate\Build\Win64\UE4Editor\Development\VisualStudioDTE”文件夹,然后重新运行Setup.bat,之后重新GenerateProjectFiles.bat即可。也有一种可能是插件问题,可能是svn拉取的项目有些插件是安装到引擎里面的,然后自己电脑引擎没有安装相应的插件,只需要将不需要的插件在vs中改成false即可。

2023-07-14 14:22:21 8358 2

原创 UE5创建的项目编译失败

(1)找到引擎目录下的D:\Epic Games\UE_5.1\Engine\Build\BatchFiles\Build.bat和同级目录下的GetDotnetPath.bat文件。在cmd中运行Running后面的代码,显示dotnet不是内部或外部命令,这种情况一般是因为没有设置环境变量。(3)打开电脑的系统环境变量设置,将引擎目录下的Dotnet指定到path中。(4)保存后重启电脑即可。

2023-07-13 16:07:14 2431 2

空空如也

空空如也

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

TA关注的人

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