虚幻Unreal - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(97评价)
价格: 3420.00元

UFUNCTION(Reliable, Clien)

服务器调用,仅自己客户端执RunOnOwningClient>


UFUNCTION(Reliable, Server)

客户端调用,服务器执行<血量控制>

 
UFUNCTION(Reliable, NetMulticast)

服务器调用,服务器和所有客户端执行

同步服务器和客户端事件

 宏标记

Reliable 重要 TCP

unreliable 不重要 UDP

 

[展开全文]
Alonelys · 2025-03-19 · 0

UPROPERTY(Replicated)

  • 让变量在服务器和客户端之间自动同步
  • 适用于简单数据同步,但不会自动通知客户端值发生了变化。
  •  

UPROPERTY(ReplicatedUsing="OnRep_ChangeCurHP")

  • Replicated 类似,但带有回调函数
  • 当变量在客户端发生变化时,自动调用 OnRep_ChangeCurHP
  • 适用于需要额外处理的同步变量(如 UI 更新、动画触发)。

 

  • 默认情况下,AActor 的变量不会自动同步,必须手动设置 Replicated
  • 必须调用 SetReplicates(true)bReplicates = true;,否则变量不会同步。
  • 变量必须使用 UPROPERTY(Replicated)UPROPERTY(ReplicatedUsing=OnRep_Function)
  • 服务器端修改变量,客户端才能收到同步
  •  
[展开全文]
Alonelys · 2025-03-19 · 0

GetWorld() 代表当前关卡的游戏世界。

 

SpawnActor<AActor> 是 UE5 中用于在世界中创建新 Actor 的方法 T 是模板参数

 

TSubclassOf<AActor> 是 Unreal Engine 中 表示 AActor 及其子类的泛型类型,用于存储 UClass 类型,但只能是 AActor 或其派生类。

 

Actor 同步 打开Replicates 

 

[展开全文]
Alonelys · 2025-03-19 · 0

UE 提供了 无缝旅行(Seamless Travel),可以让 PlayerState 在切换关卡时保持不变。步骤如下:

[展开全文]
Alonelys · 2025-03-18 · 0

游戏实例类

GameInstance

   SUper::Init() 父类初始化

    Init()

 

 

[展开全文]
Alonelys · 2025-03-18 · 0

//修改新建 蓝图 打开是独立窗口

编辑器设置-》外观-》资产编辑器打开路径

修改成Main windows

 

[展开全文]
Alonelys · 2025-03-18 · 0

 

1. 蓝图相关参数

参数

作用

适用场景

BlueprintCallable

允许蓝图调用该函数

蓝图按钮、角色逻辑

BlueprintPure

纯函数,无需执行引脚,不修改对象状态

数学运算、数据查询

BlueprintImplementableEvent

蓝图必须实现,C++ 不能定义

特效、UI 事件

BlueprintNativeEvent

蓝图可选实现,C++ 可提供默认定义

可扩展功能,如 AI 逻辑

BlueprintAuthorityOnly

仅在 服务器 可调用

服务器专属逻辑,如物品掉落

BlueprintCosmetic

仅客户端 可执行

UI、动画、粒子特效

 


// 示例:蓝图可调用函数
UFUNCTION(BlueprintCallable, Category="Gameplay")
void Jump();
//蓝图里可以调用 Jump(),但 C++ 里仍然可以正常使用。

 


2. 网络(RPC)相关参数

参数

作用

适用场景

Server

仅在 服务器 执行(需要 HasAuthority()

服务器逻辑(如伤害计算)

Client

仅在 客户端 执行(服务器调用)

客户端特效(如 UI 更新)

NetMulticast

服务器执行,并让所有客户端同步执行

全体可见效果(如爆炸特效)

Reliable

确保 RPC 可靠 传输(数据重要时使用)

物品拾取、开门

Unreliable

允许 RPC 不可靠 传输(节省带宽)

瞬时数据,如子弹轨迹

// 示例:服务器 RPC

UFUNCTION(Server, Reliable)
void Server_TakeDamage(int32 Damage);

// 客户端调用 Server_TakeDamage(),但代码只会在服务器端执行。

 


 

3. 执行权限

参数

作用

适用场景

Exec

允许在 控制台 输入命令执行

调试命令、AI 刷新

CallInEditor

允许在 编辑器模式 执行

自动化工具、地图生成

//示例:控制台命令


UFUNCTION(Exec)
void SpawnEnemy();

// 在游戏控制台(~ 键)输入 SpawnEnemy 即可执行此函数。

 


 

4. 反射系统(反序列化、垃圾回收等)

参数

作用

适用场景

Category="..."

设定蓝图中的分类

组织蓝图函数

CustomThunk

自定义 thunk 代码(高级用法)

底层优化

Meta=(Key=Value)

额外元数据(用于 UE 反射系统)

高级蓝图控制

 

//示例:设置蓝图分类


UFUNCTION(BlueprintCallable, Category="Player Actions")
void Sprint();

// 蓝图中 Sprint() 会归类到 "Player Actions" 里。

 

5. 编辑器功能

参数

作用

适用场景

DeprecatedFunction

标记函数为 废弃,不推荐使用

API 变更

SealedEvent

防止蓝图重写该事件

不希望子类修改

WithValidation

RPC 调用前检查参数合法性

安全性检查

 

//示例:废弃函数


UFUNCTION(BlueprintCallable, DeprecatedFunction, Category="Legacy")
void OldFunction();

// 蓝图会提示 OldFunction() 已废弃,但仍然可以调用。

 


 

6.组合使用示例 



UFUNCTION(BlueprintCallable, Server, Reliable, Category="Networking")
void Server_DealDamage(int32 Damage);

UFUNCTION(BlueprintImplementableEvent, BlueprintCosmetic, Category="UI")
void ShowDamageEffect();
//服务器端计算伤害 (Server_DealDamage),客户端显示受伤特效 (ShowDamageEffect)。

[展开全文]
Alonelys · 2025-03-18 · 0

PreLogin(检查登录条件)

  • 发生在客户端尝试连接到服务器时,但尚未真正建立 PlayerController
  • 主要用于验证玩家是否可以加入,比如检查 ban list(黑名单)、服务器是否已满 等。
  • 如果验证失败,可以拒绝玩家加入。

Login(创建 PlayerController)

  • 服务器 负责创建 PlayerController,并接管管理。
  • 在这个阶段,GameMode 还不会创建 Pawn,只是保证 玩家控制器 已建立。

PostLogin(玩家初始化)

  • 这里玩家已经 完全连接,可以进行各种初始化操作,比如:
    1. 初始化 HUD(UI 界面)。
    2. 将玩家加入 GameplayMuteList(用于管理语音或文本聊天的静音列表)。
    3. 创建 Pawn 并进行 Possess(如果 GameMode 允许)。
    4. 初始化玩家状态(PlayerState),同步玩家信息。
    5. 可以使用RPC 函数了

额外补充

GameModePostLogin 之后,一般还会触发 OnPostLogin 事件,开发者可以在这里进行额外的玩家初始化,比如 匹配系统、分配队伍、同步游戏状态 等。

[展开全文]
Alonelys · 2025-03-18 · 0

BP主角蓝图

角色移动组件(Character Movement)

优化跑步速度

转向摩擦力

空中控制力

空中横向摩擦力

重力(Gravity Scale):4 

启用单独的摩擦系统(Use Separate Braking Friction)

[展开全文]
0大企鹅0 · 2025-01-25 · 0

组件Components
Actor上进行使用的附加物,可以提供额外的功能Actor可以对这些组件进行自定义的修改

常用组件:

场景组件(Scene:

提供Actor在场景中的位置、旋转、缩放信息

音频组件(Audio:

播放音效(UE只将WAV(WAVE)格式的文件视为音频)

光源组件(Light:

发出亮光,可以自定义强度、颜色等

静态网格体组件(StaticMesh:

主要显示不会动的物体外观,优化好,更高效

几何体外观组件是其选定好的模板

骨骼网格体组件(SkeletalMesh:

主要显示会动的物体外观,需要动画资源

弹簧臂组件(SpringArm):

连接Actor和摄像机,以提供更灵活的画面

摄像机组件(Camera):

主要用来提供游戏画面

碰撞检测组件(Collision):

形状分为球(Sphere)、盒体(Box)、胶囊体(Capsule),不同的型状为不同的组件

进行碰撞检测,如果满足条件就会触发某些逻辑

控件组件(Widget):

分为Widget(控件组件)和WidgetInteraction(控件交互组件)

用于显示UI,可设置显示的方式和属性

公告板组件(Billboard):

Actor打上图片标记,方便在场景中点击选中,该标记在运行阶段时不会显示

文本渲染组件(TextRender):

Actor打上文字标记,方便在场景中点击选中和作为提示区分,该标记在运行阶段时会显示

粒子特效组件(ParticleSystem):

作为特效使用

NiagaraParticleSystemComponent,使用Niagara粒子系统

CascadeParticleSystemComponent,使用Cascade粒子系统

后期处理组件(PostProcess):

处理Actor的渲染、光照等属性

Actor组件(ChildActor):

将一个Actor附加到蓝图中

发射物移动组件(ProjectileMovement):

Actor生成后,具有一定的速度,会以该速度在生成后进行移动

[展开全文]
DUChicken · 2025-01-12 · 0

增强输入(Enhanced Input

使用Enhanced Input插件

对比操作映射和轴映射系统,增强输入系统有着更多的灵活性和控制能力

增强输入系统有着高度定制的优点,可以定义输入的优先级和条件,可以控制更复杂的游戏输入

增强输入系统可以创建很多套(Input Mapping Context

创建Input Action输入提供给Input Mapping Context进行绑定使用

Input Action的关键属性为值类型

在使用输入前,需要为蓝图的控制器类激活并指定一个输入映射情景:

获取控制器引用(需要cast

获得该引用的增强输入本地玩家子系统(Enhanced Input Local Player Subsystem

判断该子系统是否有效(Is Valid

有效则添加映射上下文(Add Mapping Context

触发的概念及顺序:

按下(started-按住(triggered-抬起(completed

引脚:

Triggered:根据触发器的类型决定其触发行为(默认为tick),在Started执行完后才会开始执行

Started:按下时会触发一次,最先开始执行

Ongoing:在触发前执行,需要定义触发器

Canceled:在触发取消时执行,需要定义触发器

Completed:在触发完成后执行(按键抬起),最后执行

值类型引脚:分为Bool型、浮点型、向量型,其值的值与当前触发状态有关

Elapsed Seconds:触发按键后的计时,触发完成或中断后会停止

Triggered Seconds:触发按键后的计时,触发完成后会停止

Input Action:返回对于的Input Action引用

触发器(均可设置驱动阈值)

驱动阈值:用于有力反馈的输入设备,只有输入的力超出设定的驱动阈值时才会触发的限定值,一般范围为(0,1]超出范围时会出现错误

时间膨胀:时间的流动速度

 

下移

先执行Started,后在按下时以tick的方式执行Triggered,松开时执行Completed

已按下:

先执行Started,后只执行一次Triggered,随后立马执行Completed

已松开:

先执行Started,后在按下时以tick的方式执行Ongoing,松开按键时只执行一次Triggered,随后执行Completed

弦操作:

需要绑定一个输入行为作为弦操作,当弦操作触发时,才能执行该触发器的行为。

先执行Started,后在按下时以tick的方式执行Triggered,松开时执行Completed

注意:当绑定的弦操作正在触发Triggered时,此时进行该修改器的触发行为会终止绑定的弦操作的触发行为,但是仍然保持其触发状态

点按:

先执行Started,会检测按键按下的时间是否小于设置的点按释放时间阈值,在检测期间会一直以tick的方式执行Ongoing,当在阈值内抬起按键则会执行一次Triggered,随后立马执行Completed(成功触发),否则不会执行Triggered会直接执行Canceled(中断触发)。

点按受到时间膨胀的影响

组合(Beta):

分为组合操作和取消操作

可绑定多个输入行为,按下按键后先执行Started会在该期间tick的方式执行Ongoing在该按键的规定时间内按下其他组合的按键(不能同时)则执行一次Triggered,随后执行一次Completed,否则执行Canceled

可设置按键的时间

脉冲:

按下后先执行Started会根据设定的间隔间歇式地执行一次Triggered,在等待阶段会以tick的方式执行Ongoing,在Triggered执行完后松开按键则执行Completed,若在等待阶段松开按键则执行Canceled

当设置了触发限制的次数后,该脉冲输入会在执行对应的Triggered次数后,自动执行Completed

脉冲受到时间膨胀的影响

 

长按:

按下后先执行Started

按下的时间在保存时间阈值以内时则会以tick的方式执行Ongoing

当按下的时间大于保存时间阈值时则会以tick的方式执行Triggered,此时松开按键则会执行Completed,若小于,则直接执行Canceled

当设置为一次性时,在按下的时间等于保存时间的阈值时,会执行一次Triggered,随后会执行Completed

长按受到时间膨胀影响

可设定保存时间阈值一次性

长按和松开:

按下后先执行Started

按下时则会以tick的方式执行Ongoing

松开时,当按下的时间大于保存时间阈值时,则会执行一次Triggered,随后会执行Completed;当按下的时间小于保存时间阈值时,则直接执行Canceled

长按和松开受到时间膨胀影响

可设定保存时间阈值

与操作映射的区别:

可以进行连续触发,可以获得值类型的值、触发后的状态

与轴映射的区别:

可以利用输入行为的值类型来将不同轴的输入集合起来,以不同类型的形式输出

[展开全文]
DUChicken · 2025-01-10 · 0

siki虚幻5基础入门笔记

下载并安装EpicGames

URL:EpicGame官网

安装虚幻引擎:

可以勾选引擎需要安装的模块

可以为工程创建快捷方式

更改保管库的缓存位置

保管库资源的感叹号用于查看兼容的版本

其他学习途径:

官方文档:虚幻官方文档或在库中点击发布版本说明文档(可以在里面筛选标题,查找自己需要学习的模块)

官方教程(需要科学上网):虚幻学习库

官方论坛(只能使用英文):虚幻学习论坛

代码片段库:虚幻片段库

bilibili

创建工程

  1. 打开引擎
  2. 创建工程(可选择项目的开发语言)

注意:高版本可以打开低版本的工程(会创建一个副本),反之则不行

在引擎时,可快速打开工程

创建工程时,不要使用中文名

创建的工程为蓝图时,仍可以使用c++

蓝图相当于将c++编写的功能代码转化为可重复使用的节点,用于与其他节点拼接定义逻辑

 

关卡编辑器

工程预览

预览摄像机:C

鼠标左键+拖动:移动或旋转C

鼠标右键+拖动:旋转C

鼠标中健+拖动:移动C

ctrl+alt+单击+拖动:创建方形选框

鼠标右键+wasd:移动C

选中物体+F:聚焦到物体位置

alt+鼠标圈(左,中,右)键:

围绕支点或选取点翻转视口,向前推动C使其接近支点或选取点,根据鼠标移动的方向移动C

编辑器界面:

在不同窗口下,菜单栏的位置和功能会有所差异

点击场景中的物体,可以定位到大纲中对应的物品,反之也相同

场景与关卡的关系:

包含关系(两者之间有一方包含了另一方),嵌套关系(两者有公共的部分,也有私有的部分)

不同编辑器的窗口是有较大差异性的,部分编辑器窗口拥有特殊的菜单栏

 

 

菜单栏

文件菜单

可以在文件选项中收藏关卡,以便快速打开(为当前关卡)

在文件菜单栏另存关卡副本,用于备份

可以将场景导出,用于快速搭建

压缩项目可以将项目压缩成一个压缩包

编辑菜单

可撤销或恢复操作

查看历史操作记录,可快速回溯到想要的步骤(切换关卡后清除)

可编辑操作

编译器偏好设置影响其他工程(应用到引擎)

项目设置只影响项目自身,不影响其他工程

窗口菜单:

打开编辑器的一些窗口或日志窗口,可更改引擎界面布局

可以将已有的窗口以独立的形式打开,不同的窗口也是如此

消息日志用于显示错误信息

输出日志用于显示运行时的输出信息

可将引擎全屏

其他

工具栏

可使用编程或编辑器的工具,也可进行调试和检测

主要用于新建c++类和使用工具

构建菜单栏

用于构建经过改动后的东西

选择菜单栏

用于选择对象

actor菜单栏

选择一个对象后,进行快速的修改

帮助菜单栏

快速跳转学习文档或学习社区,也可进行反馈

主工具栏

可保存(只保存当前窗口对象的信息)和切换不同的模式来工作

可以放置基础的actor到场景中

actor是基本单位,能放在场景中的东西都是actor(与可视性无关)

可快速创建和访问修改蓝图类

蓝图类是基于蓝图创建出来的,可以实现游戏行为的对象

可以创建建议的关卡序列动画

可控制播放(暂停,下一帧,停止,脱离控制)

可模拟各个平台的运行和启动,选择运行的选项

设置玩家生成的位置

可以使用局域网的开发

可以将项目打包

可以进行游戏的全局设置

 

 

关卡视口

设置

开关实时

显示fps和延迟

统计数据

显示工具栏

修改视口视野参数(90度默认)

设置加载资源有效范围(远景平面,1000=10m

设置渲染质量与性能(屏幕百分比)

开关允许控制过场动画,切换游戏视图模式

开启全屏,开关摄像机晃动

添加和跳转到书签(摄像机预览位置)

在位置创建摄像机

截图

视口布局

高级设置(视口偏好设置)

视图工具栏

视图透视模式(可切换为动画)设置

视图光照设置

视图显示选项

移动,缩放,旋转选中的物体

切换坐标系(世界与本地)

设置和开启snap(修改步长),方便对其

调整摄像机速度

世界场景坐标与本地场景坐标的区别

世界坐标与本地坐标的不同,相当于一个物体的前后左右与世界的东南西北之间的关系本质上是对象自身的坐标与世界场景坐标的关系


大纲和细节面板

大纲

定位,筛选,排序,分组,可视性设置,查看场景中的actor

细节面板

修改选中物体的详细参数和设置

游戏模式

存放了游戏规则与逻辑的蓝图,每个关卡可以使用不同的游戏模式,当关卡没有游戏模式时,会使用项目设置中的默认游戏模式

可以设置游戏模式的框架:

默认pawn类:可操控的玩家类

hud类:UI界面

玩家控制器类:用于控制默认pawn类的控制器,也可与场景互动

游戏状态类:游戏全局的状态数据

玩家状态类:玩家的状态数据

旁观者类:观察其他玩家的类

可以将游戏模式理解为gameplay框架的体现

 

 

内容侧滑菜单和底部菜单栏

内容侧滑菜单

浏览和管理项目资产,蓝图和其他游戏相关对象,可将对象重复拖入场景

可添加和导入资产,类或模板

可查找和筛选资产或对象

底部菜单栏:

输出日志

控制台(其命令可在帮助查看)

c++编译

保存所有

蓝图类

可以在文件夹右键创建蓝图类

所有蓝图类的父类都是object

蓝图类可以被实例化

实例化是将某种定义好的物体具象化成可以直接使用的

命名规范:BP前缀+名字

 

 

蓝图编辑器

主菜单栏对比关卡编辑有明显功能差异

可定位该蓝图编辑器的对象在文件夹的位置

可使用编译检查编写的逻辑是否正确

可对节点设置可见性选项(查看与隐藏不相关)

可修改类设置

可修改类默认值,影响对象实例化

所有蓝图类都有事件图表

可以查找相关的逻辑节点

选中组件或逻辑节点后,可以在细节面板修改其属性

可以为蓝图类添加组件

构造脚本是在蓝图类实例化时调用的

 

 

图表

可以新建事件图表,用于将不同功能写在不同的图表中,方便区分

每个事件图表会显示其包含的所有事件

大部分事件节点不能在其他图表同时使用,小部分可以

事件图表

注释

用于标注逻辑的大致功能,不仅方便查找,也能快速理解逻辑

左键框选对应逻辑按下c,点击注释框可以在细节面板更改其属性

建议在编写完一个逻辑功能后就添加一个注释

蓝图节点

可视化编程的基本单位

拥有引脚,用于组成逻辑并执行

可拥有两种引脚:输入输出引脚(圆形)和执行引脚(五边形)

蓝图的逻辑需要事件节点作为开始节点

蓝图节点的执行顺序是从左到右

对着事件图表的空白处右键即可搜索并创建节点

可以为节点添加气泡注释,用于理解改节点的作用

对着引脚按下alt可以断开引脚线,按下ctrl移动引脚线

选中节点 按下退格或del删除

框选蓝图节点,按下q键,进行水平排列

 

[展开全文]
DUChicken · 2025-01-07 · 0

算数运算

算数运算节点引脚为灰色时,引脚为通配符,可以转换为允许运算的变量类型

加(+):将两个数相加

减(-):将两个数相减

乘(*):将两个数相乘

除(/):用一个数除以另一个数

取模(%):用一个数除以另一个数,取商为最终结果时的余数(当余数小于除数时商才为最终结果)

取模运算仅限几个类型,因此没有通配符

浮点与整数进行运算时,结果为浮点

字符类型不能进行算数运算

向量的运算:

加:

两个向量相加或指定相加的轴的数

减:

两个向量相减或指定相减的轴的数

乘:

两个向量相乘或指定相乘的轴的数

除:

一个向量除以另一个向量或指定除以的轴的数

将其引脚拆分可对其轴做取模运算

 

函数

执行函数

设置actor(位置、旋转、变换)(Set Actor LocationRotationTransform)

设置Actor的(位置、旋转和变换),需要将actor的移动性设置为可移动才能生效

[展开全文]
DUChicken · 2024-12-31 · 0

基本变量类型

bool(布尔):值只有true(真)和false(假)

byte(字节):范围为0-255,由于存储的值较少,因此速度快

integer(整数):范围远大于byte,且有负数,但是相对byte

integer64(整数64位):范围大于integer

float(浮点):为小数,小数部分有效数字有6

name(命名):一个字符串,可用于存储命名

string(字符串):一个字符串,可进行拼接,可用于存储短文本

text(文本):一个字符串,可进行拼接,可用于存储大段文本

vector(向量):一个三维矢量,可用于存储位置和表示位移,可创建向量或打散其引脚为其赋值

rotatior(旋转体):一个三维的旋转体,可用于存储旋转的信息,可创建旋转体或打散其引脚为其赋值

transform(变换):存储位置、旋转、缩放的复合类型,可创建变换或打散其引脚为其赋值

[展开全文]
DUChicken · 2024-12-31 · 0

跳跃:添加跳跃的操作映射,按下时执行跳跃节点

抬起时执行停止跳跃节点

[展开全文]
DUChicken · 2024-12-31 · 0

Floor向下取整

Ceil向上取整

Frac 取小数

Fmode取余数

[展开全文]
失忆牧羊 · 2024-10-15 · 0

这个处理方案是取了敌我同时只激活一个摄像机的巧,并非是切换摄像机,本质是切换了摄像机所属Actor,如果是同一个角色身上的不同摄像机,

[展开全文]
Keiwww · 2024-10-14 · 0

W向量是什么作用?

[展开全文]
失忆牧羊 · 2024-10-13 · 0

我执行这一句

ALTER TABLE ue RENAME COLUMN name TO name2;

提示错误:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMN name TO name2' at line 1

[展开全文]
狐染倾城 · 2024-10-03 · 0

hit和end不能同时存在

hit是阻挡,另一个则是重叠

[展开全文]
有梦想的熊 · 2024-09-19 · 0