自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UE5 C++ 跑酷游戏练习 Part1

CreateDefaultSubobject实例化组件,SetupAttachment添加组件,Root根组件,Father在根组件下,其余在Father组件下。在里面,添加UBoxComponent组件,添加碰撞的回调函数。人物逻辑就写好了,一直跑,Turn为True时转90.其余时间,相当于一直按W,你自己决定要不要A,D,斜向跑。只让它获得向前的方向。如果不转向,按照人物控制当前的朝向,计算左右的向量,并添加左右输入。2.这里将道路,分为直道,转弯道,上下道。二.写碰撞,碰撞时,能实现转向。

2024-06-18 23:08:29 372

原创 《网络多人游戏 构架与编程》 第二章 互联网 Part1

它引入了MAC地址。这样主机可以更容易地更换,主机群可以划分为子网,在两个遥远的子网主机,可以使用不同的链路层协议和物理介质相互发送信息。一个定义地址空间的逻辑分段作为物理子网的子网系统,一个在子网之间转发数据的路由系统。IPv4数据包包括包头和数据,包头由实现网络层功能所必需的数据组成,数据包括所需要的传输的上层数据。它的实现是将传输的信息拆分为小块,称为分组(数据包)。它的实现,需要一个正式的协议集合来真正定义数据是如何打包成分组,又如何转发到网络中的。每个层次是接口,协议或者协议的集合是接口的实现。

2024-06-16 23:02:02 598

原创 UE5 Cesium2 最新使用地理配准子关卡构造全球场景

点击“Place Georeference Origin Here”,调整子关卡原点到想去的位置,子关卡将进入“编辑模式”。切换子关卡时,使用眼睛图标激活按钮。修改子关卡,请使用Edit打卡,Commit提交保存。子关卡的创立,官方教程分为了两种 一种将主关卡的内容提取到子关卡上,另一种是创建空的子关卡,往里面添加内容。要将对象从持久级别移动到子级别,请在持久级别中选择该对象,然后选择“编辑”-“>”剪切“。将Daver2的子关卡,通过添加CesiumSubLevel组件,让它变为Cesium的子关卡。

2024-05-28 15:12:08 829

原创 UE5 C++软引用

软引用通常有FSoftObjectPath、FSoftClassPath、TSoftObjectPtr、TSoftClassPtr。它指向的资源未被加载,仅仅是提供了一个路径,通过路径找到我们的资源。一.软引用通常是仅储存资源对象的资源路径没有与资源产生耦合关系的引用(软引用加载到内存中,只有在需要的时候才会被加载)1.FSoftObjectPath保存对象的路径字符串,通过字符串找到所对应的资源(侧重于描述某一类资源,比如:静态模型、动态模型、数据表格等。二.这些引用都可以在编辑上,选择资源。

2024-05-10 15:22:54 334

原创 UE5网络学习笔记-《网络多人游戏-构架与编程》

1.一开始是使用串口实现计算机之间的通信。但不同计算机最多两个串口,要采取菊花链,一种网络拓扑类型。(经常听到串口,原来是用于通信)2.多用户网络游戏,用电话线进行通信调制。布告栏系统(BBS)允许多用户通过调制解调器连接到同一个系统。这个系统可以运行包括游戏在内的很多应用。3.局域网(Local area network,LAN)字面意思。一个区域多条计算机相互连接。(串口连接也是)。许多支持支持局域网连接的多人游戏,也支持其他方式,如调制解调器连接和在线网络连接。(我也经常遇到离线工作环境)

2024-05-05 12:24:42 514

原创 UE5 C++ 项目C#编译目标 链接模块

Type类型设置为 Editor类型。(当前的项目为编译器服务)Build的环境 设置为 共享。bBuildAllModules 是否编译所有模块 是。(依赖的模块全部都编译)额外模块 中 添加“UnrealGame”,也就是把自己加入额外模块。Type为游戏类型(默认的Game,包含独立游戏,可能服务端客户端一样。并未指明),其他同上。

2024-04-24 16:06:43 494

原创 UE5 C++ 对项目工程的再认识

中间文件Intermediate,涉及到反射。胶水文件,与代码产生关联。通过Generate生成出来。1.C#编译出第三方文件: 反射文件头文件关联,UHT里的文件.hcpp的关联,UE将所有的cpp放到 gen.cpp里,实现自动关联。反射用处很多:1.接脚本,蓝图脚本。2.本地的数据或代码,反射到编辑器上面。2.宏3.其他的中间文件,在Development/项目名里4.用与断点调试的文件 .pdb5. dll库,将数据和内容,打在文件中。以后调用时直接通过dll加到内存里。二进制文件。

2024-04-18 15:21:27 278

原创 UE5 C++ 射线检测

如果击中物体,射线检测返回HitResult结构体。ECC_Visibility则是根据通道查询检测。可以从HitResult里获取Actor. ImpactPoint是射线击中这个点的物体位置的位置。HitResult.Location是指击中的点的位置。使用LineTraceSingleByChannel 射线直线通道检测,所以。可以规避一些不想检测的对象。但个人射线检测用的多一些。

2024-04-17 15:55:13 340

原创 UE5 C++ 使用TimeLine时间轴实现开关门

再上篇的基础上,添加了StaticMeshComponent, UBoxComponent。和碰撞的三个函数。

2024-04-17 11:08:33 461

原创 UE5 C++ TimeLine 时间轴练习

声明CurveFloat 和 TimelineComponent。

2024-04-15 14:57:25 311

原创 UE5 C++ 创建3DWidgete 血条 再造成伤害

创建类绑定监听函数函数里使用父类变量进行计算 百分比。

2024-04-15 13:17:20 397

原创 UE5 C++ TimeHandle 定时器练习

每一秒 调用Printf函数。

2024-04-15 09:51:31 304

原创 UE5 C++ Interface接口

2.在Character.cpp简单实现, 并在 BeginPlay里调用这两个函数。声明Attack() 和 Calculatehealth()虚函数。1.头文件设置 添加。

2024-04-01 13:16:25 375

原创 UE5 C++ 3D血条 响应人物受伤 案例

1.创建C++ Userwidget的 MyHealthWidget,声明当前血量和最大血量2.创建UMG的蓝图,ClassSetting里 继承 MyHealthWidget.3.

2024-03-22 11:23:41 565

原创 python 爬虫爬取地理空间高程图GDEMV2 30m 中国地形

这是头文件需要用到的库。我们首先要配置selenium。我们还需要去下载Web驱动。我直接放到的 python.exe 那个目录里了。

2024-03-21 15:40:31 572

原创 UE5 C++增强输入

1.项目名.build.cs。添加模块“EnhancedInput”,方便找到头文件和映射的一些文件。2.添加InputActionValue.h EnhancedInputComponent.h EnhancedInputSubSystems.h GameFramework/Controller.h GameFrameWork/SpringArmComponent.h Camera/CameraComponent.h。

2024-03-21 15:15:34 634

原创 动态加载类LoadClass 打包后资源缺失 的解决方案

献上代码,在我自己的PlayerController里。加载继承了我C++类的Widget为什么这个代码,编译时正常加载,打包后一直打印c。如果不写if判断一下空指针,在编译状态下好好的。然后在打包好,就会崩溃。而网上这种动态加载类的方式,很常见。先加载UClass,在用CreateWidget,创建你自己的widget类。

2024-03-12 21:53:22 363

原创 ArGis 拼接地形 镶嵌地形 高精度覆盖低精度可用

四.像素类型 ,像元大小和 拼接的子Dem一样。不一样有可能,出错。五.镶嵌运算符 更重要。这里推荐一个写的更好的博客来解释原理。二.可以拖拽 选择需要合并的文件。三.选择位置,并且进行命名。

2024-03-07 17:17:43 367

原创 UE5 C++ 发射子弹发射(Projectile)

4.通过寻找静态模型,设置静态模型的实例。设置根组件,设置父子级,只要Projectile在根组件后面就能,让物体跟随,就有发射根组件的效果。1.创建C++类 MyBullet,在MyBullet.h中包含相关头文件。再设置参数,调整效果。发射的初始速度,最大速度,重力等。5.生成蓝图类放到场景中,这样就能实现单发的子弹效果。2.声明属性变量,子弹模型,子弹碰撞体,子弹发射器。一.相关蓝图的练习,在我之前的文章中。

2024-02-29 21:23:15 907 1

原创 UE5 C++ 单播 多播代理 动态多播代理

一. 代理机制,代理也叫做委托,其作用就是提供一种消息机制。1.动态多播代理类型声明,区别在于可以暴露给蓝图,在蓝图中进行事件的绑定。1.类型的声明(代理的名称,参数类型(个数)),在Actor外。1.多播代理的类型声明(一个代理可绑定多个函数)2.在Actor里声明对应类型的的单播代理变量。2.在Actor里声明对应类型的的多播代理变量。3.在Actor里声明多播代理绑定的函数。6.在BeginPlay里执行多播代理。2.动态多播代理变量的反射声明。3.编译后,在蓝图里绑定。3.声明代理用绑定的函数。

2024-02-27 10:16:42 704

原创 UE5 C++ Widget练习 Button 和 ProgressBar创建血条

UClass指针 指向 动态加载LoadClass类(MyUserWidget),UserWidget指针 指向 用CreateWidget实例化UClass指向的类。3.将新建的UMG_Widget里的classsetting里的继承的父类,修改为MyUserWiget。5.这里的C++声明过的参数可以直接访问到,计算现阶段血量的百分比,赋值给ProgressBar。4.使用Button里的,OnClicked 绑定代理。5.代理时,按下按钮里的函数再套用减少血量的函数。

2024-02-26 14:01:57 669 1

原创 UE C++ 代理碰撞事件 设置碰撞类型

这里是6个参数,从后向前数六个参数。将中间的“,”去掉,作为调用函数的参数。其余两个绑定也是类似的思路。在Actor以这样的形式实现代理绑定,在BeginPlay()里。一般这里有报错,有可能就是代理调用函数的参数个数弄错了。转到OnComponentBeginOverlap定义。设置碰撞,就可以一直调用 碰撞中的代理函数。一.在Actor中声明碰撞BOX组件。这里测试碰撞前 碰撞后的代理函数。再转到这个代理的定义。声明后在cpp中实现。

2024-02-21 17:31:57 319

原创 UE5 C++ 创建可缩放的相机

根组件赋值为MyRoot的物体组件。新定义的函数中,通过GetPawn()拿到,GameMode里的Pawn,把它转换为AMyPawn。如果转换成功,在调用里面的MyPawn里的Zoom函数。在Pawn里将的组件通过CreateDefaultSubobject(TEXT("Name"))创造命名。在PlayerController.h里声明 绑定输入 和 其他功能函数。通过绑定输入代理,调用PlayerController的新定义的函数。4.在滑动函数里,将相机的伸缩臂的伸缩方向和速度的逻辑写好。

2024-02-20 14:00:17 765

原创 UE5 动态加载资源和类

加载StaticMesh等资源,就使用LoadObject(nullptr,TEXT("Copy Reference"))就使用LoadClass(this,TEXT("Copy Reference"))因为是动态加载,所以不用在构造的时候去加载。这里再BeginPlay里加载。SetStaticMesh测试动态加载的模型是否能赋值。加载类资源,比如蓝图Actor类。但是同样要在最后一个字母后+_C。使用生成物体的方式,测试类。

2024-02-19 17:18:26 669

原创 UE5 C++ 静态加载资源和类

在Actor中加载初始化了组件,现在在组件中赋值。使用static ConstructorHelpers::FObjectFinderTempName(TEXT("Copy Reference"));再用TempName.Object。里面的资源都来自StarterContent。1.在Actor中再声明一个AActor类。再赋值TempName.Class。一.上篇文章创建组件并绑定之后。2.在静态加载类时使用。

2024-02-19 15:18:07 681

原创 UE5 C++ 创建Actor并在构造函数中添加组件

每个Actor里内部自动带有RootComponent根组件,将场景组件作为组件。其余用SetupAttachment来作为子组件连接。在构造函数中将对应的组件指针实例化, CreateDefaultSubobject<T>一.在C++文件夹里创建Actor类。声明组件指针属性和构造函数。在头文件中声明需要的组件。

2024-02-19 11:39:56 867

原创 UGameInStance实例化

点击运行,并在自己的GameMode里创建自己的Pawn的实例,就能在output中获得GameInstance的测试结果。在项目设置中,将GameInstance的实例化类 设值为 MyGameInstance。三.在MyPawn的BeginPlay里面获得GameInstance实例。获得世界的 第一个玩家控制的Instance 转换为 MyInstance。在头文件里声明 三个字符串,做测试。声明指向MyGameInstance的指针。一.创建UGameInstance类。

2024-02-19 10:07:42 253

原创 UE5 C++ UObject实例化

您可只创建一个 UClass 类型的 UPROPERTY,让设计者指定派生自 UDamageType 的类;NewObject()有多种重载方法,其中一个关键的参数为Outer*,表示这个对象的外部对象,通常可传this指针进去。UE4中所有的类都继承于UObject,对UObject不使用new来直接创建,而使用UE4提供的工厂方法NewObject()来创建。提供极高的灵活性,包括带自动生成命名的简单使用案例。的所以每次调用T::StaticClass返回的都是同一个结果。

2024-02-18 16:56:48 875

原创 C++ 里设置Expose on Spawn csv 通过 UStruct 导入为 DataTable

创建UObject类,并在C++中声明结构体。继承FTableRowBase。关卡蓝图中Spawn时会有 参数接口。在Excel里,创建对应csv文件。

2024-02-18 15:03:06 195

原创 UE5 C++ UENUM 和 USTRUCT

一.首先在APawn里声明 UENUM 和 USTRUCT。UENUM 有两种定义方式。Enum的第二种 enum class类(EMyTestEnum)作为 属性。Struct的 类似 将FMyTestStruct的结构体直接使用。首先要有GENERATED_USTRUCT_BODY()这个函数。(使用TEnumAsByte 定义的名字)还有是继承uint8: 通过申明class类。Enum的第一种 将命名空间里的枚举作为属性。二.在 AMyPawn 里定义。这就是两者的最基本的用法。

2024-02-18 13:48:16 530

原创 UE5C++学习笔记 UPROPERTY宏

UPROPERTY()是通过反射把属性暴露在蓝图或者实例的细节面板当中,来实现C++和蓝图之间的通信或者交互。—— 生成反射数据生成,蓝图里能找到。3. 接下来,是能反射到蓝图中的变量。第二个参数,可以规定蓝图的权限。5.属性在 蓝图中条件控制。2.能编辑的,能改能读的。

2024-01-24 17:48:16 569

原创 TArry TMap TSet

TSet 类似与TMap 和 TMultiMap,但有一个重要区别:TSet 是通过对元素求值的可覆盖函数,使用数据本身作为键,而不是将数据值与独立的键相关。//TMap是一种键值对容器,里面的数据都是成对出现的(Key,Value),Value通过Key值来获取,且Key值不能重复,key值唯一。TSet 可以非常快速地添加、查找和删除元素(恒定时间),-TSet 也是值类型,支持常规复制、赋值和析构函数操作,以及其元素较强的所有权。这里是将NewSet "Twotwo"的元素,改为"One"。

2024-01-24 11:06:03 355

原创 UE5 C++学习笔记 FString FName FText相互转换

2. FName 是UE里特有的类型。它更注重于表示名称不区分大小写,不可以更改。引擎中的资源名称都是FName类型,通过内容建立哈希,直接比较哈希。创建方式为 FName MyName = FName(*MyString);最接近std::string, 唯一可以修改的字符串类型。3.FText 着重于显示和本地化。本地化是指多种语言的处理,不可更改。//这里没有 FText->Fame 得绕一圈 FText->FString->FName。像变为Text,直接 FText::From***();

2024-01-19 17:18:14 1091

原创 UE5 C++ 基础变量类型,关于框架的初级练习

4.接着重写BeginPlay,Tick(float DeltaTime) ,EndPlay(const EEndPlayReason::Type)函数。并在MyGameMode里的,本身就封装了DefaultPawn等值,如下写法就可以完成框架搭建。virtual具有继承性:父类中定义为virtual的函数在子类中重写的函数也自动成为虚函数。2.并在MyGameMode的头文件里面,把GmaeMode里的框架需要的框架类都包含进去。在这里需要使用Super,父类的函数,并且把对应的参数传入父类的函数中。

2024-01-18 19:15:58 679

原创 UE5 C++学习笔记 常用宏的再次理解

2.GENERATED_UCLASS_BODY()表示我们使用父类的构造,如果我们在自定义的类中做一些初始化操作,可以直接在.cpp文件中实现构造函数,而不需要在.h头文件中去声明,这个宏会自动生成带有特定参数的构造函数,它之后的成员是public。GENERATED_BODY()表示我们不直接使用父类的构造函数,如果我们要在我们自定义的类中做一些初始化操作,需要我们自己在.h头文件中声明构造函数,然后在.cpp文件中 实现该构造函数,默认它之后的成员函数,成员变量是private。

2024-01-18 14:59:14 902

原创 UE5 C++ 学习笔记 UBT UHT 和 一些头文件

GameFramework.h/GameModeBase.h 因为这个是GameModeBase类,所以他会包含GameModeBase的相关头generated.h存储了底层生成的反射数据。每个类,都会包含这些反射数据。Build.cs包含了每个模块的信息,表明了这个项目用到了哪一些模块。该文件里的using UnrealBuilTool 是使用虚幻的编译工具,编译每个模块,并处理相关依赖信息。这里的反射数据,是需要UBT和UHT这两个的相互调用影响,生成在generated.h中。

2024-01-18 10:47:22 924

原创 在UE5里 可变 进小远大的灯光效果

1.创建灯光蓝图,获得相机的第一个。GetActorForwardVector 获得主相机的正前方的方向向量。再用GetCameraLocation获得主摄像机的世界位置,减去物体的灯光自身的位置。两个向量做点乘,就可以得到灯光向量 到 在摄像机前面的投影。获得摄像机世界位置CameraPosition,还有材质的位置AbsoluteWorldPosition。MapRangeClamped 映射出来的值,作为Scale大小的值。2.然后得到的值,通过映射。只是这里交给了,材质GPU处理,创建个灯光材质。

2024-01-04 20:00:34 450

原创 UE5 C++ LiveCoding 运行时加载的一些理解

一.它是热更新的一种进化,更加灵活,迅速。如果在设置上取消,它会回退到上一个版本。你只需要在编辑器或者C++编辑器上,按Alt+Ctrl+F11进行运行加载,代码没错一般都会成功。我测试了改属性的宏定义,也能马上响应,有点牛的。确实方便,提高效率。热更新的方法,建议也是尽量不加头文件。加载不了就重新编译。我理解如下,如果在.h下修改,包括宏属性。你就能将原型的默认值修改。甚至能将实例改为默认值。文件中应用的构建器所设置的数值不会在现有的对象实例中更新。文件中进行修改,你将会看到变动。修改变量的默认值时,

2023-12-20 10:02:21 607

原创 C++ 学习笔记

一.正确的创建c++类的文件路径是在工程的Source文件夹下的 同工程名的C++文件夹中。有些可以删除的文件是可以右键generate生成的。二.如果有中文路径可能就会,报错C1083。

2023-12-19 11:25:29 398

原创 UE里的运动轨迹路线 实体化

1.UE里的路线,UE里沿着样条线移动。

2023-12-13 21:01:14 533

空空如也

空空如也

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

TA关注的人

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