UE5 基础知识

1、3D显示原理

逻辑-几何体-光栅化处理-像素渲染。

传统游戏靠LOD来降低机能消耗,而UE5内置了类似的虚拟几何体功能,自动降低负载。

即时光线追踪,效果更真实,降低美术工时,但机能压力大。

而传统方式是预先烘焙贴图,造成高工时低效率,优点是机能消耗小。

2、事件

事件-函数-动作-变量。

Actor 是可以添加到关卡的游戏对象,通过使用动作来响应事件。

  • 碰撞事件:当两个 Actor 发生碰撞或重叠时执行。

  • 输入事件:这些事件由输入设备触发,例如键盘、鼠标、触摸屏和游戏手柄。

  • 事件开始运行(Event BeginPlay):在游戏开始时执行,对于已经存在于关卡编辑器上的 Actor,或者如果在运行时发生,则在生成 Actor 之后立即执行。

  • Event End Play:在运行时将要移除 Actor 时执行。

  • Event Tick:这被称为游戏的每一帧。例如:如果游戏以每秒 60 帧的速度运行,则该事件将在一秒钟内被调用 60 次。

在创建蓝图脚本时,有时,一组动作会在蓝图中的多个地方使用。这些动作可以转化为宏或函数

函数的优点之一是,在一个蓝图中创建的函数可以从另一个蓝图中调用。

3、变量类型

  • 布尔值(Boolean):只能保存真或假。

  • 字节(Byte):这是一个 8 位数字。它可以存储 0 到 255 之间的整数值。

  • 整数(Integer):这是一个 32 位数字。它可以存储介于 -2,147,483,648 和 2,147,483,647 之间的整数值。

  • Integer64:这是一个 64 位数字。它可以存储介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的整数值。

  • 浮点(Float):这是一个 32 位浮点数。它可以存储带小数部分的数值,精度为七位小数。

  • Double:这是一个 64 位浮点数。它可以存储带小数部分的数值,精度为 16 位小数。

  • 命名(Name):用作对象标识符的一段文本。

  • 字符串(String):可以存储一组字母数字字符。

  • 文本(Text):此类型用于将被本地化的文本,这意味着它可以更轻松地实现不同语言的翻译。

  • 向量(Vector):包含代表 3D 向量的 X、Y 和 Z 浮点值。

  • 旋转体(Rotator):包含 X(滚动)、Y(俯仰)和 Z(偏航)浮点值,它们表示 3D 空间中的旋转。

  • 转变(Transform):可以存储位置、旋转和缩放。

4、常用运算符

add, subtract, multiply divide   加减乘除,算术运算
Greater than,less than,equal 大于小于等于,以及衍生出<= >= !=,关系运算
++ -- 自增加1,自减少1

逻辑运算

  • OR:如果任何输入值为真,则返回真值。

  • AND:当且仅当所有输入值都为 True 时,才返回 True 值。

  • NOT:只接收一个输入值,结果将是相反的值。

  • NOR:这是 NOT 和 OR 运算符的组合。如果两个输入都为 False,则返回 True,否则返回 False。

  • NAND:这是 NOT 和 AND 运算符的组合。如果两个输入都为 True,则返回 False 值,否则返回 True。

  • XOR:此运算符称为异或。如果两个输入不同(一个为 True,另一个为 False),则返回 True 值。如果两个输入相同,则返回值为 False。

5、技巧

BeginPlay、Tick、BeginOverlap、Hit   (when-if-do)

cast to、Branch、

sequence,多列依次执行。有助于条理清晰。

Flipflop,两个结果交替执行。

normalize  向量归一化

DeltaSeconds

timer、timeline

set material、FieldOfView、SpawnEmitter、DestroyActor

IA_Zoom

widget、CanvasPanel 

-------------------

Execute Console Command

DisableAllScreenMessages(禁用所有屏幕信息),如红色警告文字

EnableAllScreenMessages(启用所有屏幕消息)

在这里插入图片描述

11、UE4官方蓝图优化总结

FestEurope 2019 蓝图深入探讨|Blueprint In-depth 官方视频

UE4官方蓝图优化总结

总览

----------------------------------------------------------

蓝图主要消耗

    蓝图的消耗主要是在节点之间,蓝图连线触发的消耗是一致的,但节点运行的消耗是通过C++ ,节点不同就有所不同. (意思应该是简化节点连接的数量可以降低蓝图消耗)

----------------------------------------------------------

循环节点

    与循环逻辑有关的节点,性能开销都很大. 因为在循环节点中,会有很多连线. 根据实际需要来使用.

 ----------------------------------------------------------

遍历节点

    遍历Actor的节点同样性能开销很大 , 建议使用时把遍历结果保存下来.

 ----------------------------------------------------------

每帧更新节点

    大量使用每帧更新节点,同样开销很大.  后面会有一些方法来优化他.

 ----------------------------------------------------------

循环上限

    蓝图是单线程执行, 循环次数上限是100万 , 所有蓝图每帧指令执行次数上限是25万.

 ----------------------------------------------------------

复杂的蓝图Actor

    蓝图本身作为预制体不会产生性能开销. 只有预制体特别复杂的时候才会. 总的来说影响不大.

 ----------------------------------------------------------

开销对比

    蓝图开销对比.  编辑器模式(红色)运行下效率不高. 但打包(蓝色)和开发模式(黄色)要低很多, 比C++高10倍左右.

 ----------------------------------------------------------

每帧运行节点

每帧运行节点

    这些类似的节点都是每帧来更新的 , 包括输入,时间轴,更新动画,UMG的绑定.

优化建议:

1. 避免过多使用每帧更新, 最直接有效

2. 当使用每帧更新时,尽量思考是否必要. 80%-90%的情况是用不到的

3. 

关闭tick位置

        可以禁用蓝图每帧更新,如果不需要.

4. 

定时器更新

        定时器可以处理几乎所有的节点更新

优化定时器更新

    如果场景里有很多实例,不希望在同一时间内循环,导致开销骤增,可以使用随机时间来分摊开销.

5. 

UMG绑定更新VS事件更新

     尽可能使用基于事件的更新, 上图中UMG绑定会每帧更新.

 6. 

禁用蓝图每帧更新

     可以禁用蓝图每帧更新,或者修改更新间隔.  如果没有每帧更新的事件,禁不禁用没有区别.

7. 

根据距离开启每帧更新

     可以通过设置一些条件来启用每帧更新. 方法很简单,但效果明显.

根据距离越远更新频率越低

    同上 可以通过设置一些条件来修改更新频率.  

根据是否渲染设置更新频率或者关闭

    有个节点Was Recently Rendered,能提供最近是否渲染.如果是false可以考虑关掉或者降低更新频率.

8. 视觉效果不一定要像逻辑处理一样每帧更新.

       根据情况在适当的时候拆分逻辑

使用定时器更新碰撞体积和设置actor位置的计算

    每帧更新部分,逻辑没有变,但降低了开销.

9. 

图中物体在旋转

    简单的动画可以使用材质来实现,不必用蓝图来写. 用材质是使用GPU, 蓝图会消耗CPU. 并且比蓝图更快. 

true是使用蓝图传参数来改变材质参数实现变色, false直接使用材质来改变颜色

     任何简单动画和淡入淡出效果或其他效果.都可以使用材质来处理.材质总是比蓝图快.

-------------------------------------------------------------

性能分析和调试

1.  

蓝图调试

Blueprint Debugger

    Window---&gt;Developer Tools---&gt;Blueprint Debugger 方便查看所有监测值

2. 可视化日志

可视化日志

    场景中可视化查看变量变化位置和记录轨迹,需要创建或者在现有蓝图里添加

开启可视化日志

    设置复杂  下面是设置在Tick事件的Heath后面,记录Heath变化和场景中发生变化的位置

      然后打开Window---&gt;Developer Tools---&gt;Visual Logger窗口

3. 分析工具

    统计数据窗口

统计数据窗口

    控制台输入 Stat Game

### UE5 Niagara 系统基础知识 Niagara 是 Unreal Engine 中的一个强大工具,专为创建高质量的粒子效果而设计。它不仅支持传统的 GPU 和 CPU 驱动的粒子系统,还引入了许多新的功能和优化,使得开发者能够更高效地实现复杂的效果。 #### Niagara 的核心概念 Niagara 提供了一个基于节点的工作流,允许用户通过拖拽的方式连接不同的模块来定义粒子的行为。其主要组成部分包括: - **Emitter(发射器)**: 负责控制粒子如何被生成的时间、位置和其他属性。 - **System(系统)**: 将多个 Emitter 组合在一起形成完整的视觉效果。 - **Module(模块)**: 控制特定方面的行为,比如生命周期、颜色变化、速度调整等[^2]。 #### 创建第一个 Niagara 效果 要开始使用 Niagara,在 UE5 编辑器中可以按照以下方式操作: 1. 打开内容浏览器并右键点击空白区域,选择 `Niagara` -> `Niagara System` 来新建一个 Niagara 粒子系统。 2. 双击该文件进入 Niagara Editor 接口,这里可以看到两个重要部分——Event Script Graph 和 Particle Simulator Graph。 3. 在 Event Script Graph 上添加一个新的 Emitter 并配置它的基本参数,例如初始数量、存活时间等。 4. 切换到 Particle Simulator Graph 对单个粒子的具体表现形式进行自定义设定,像运动轨迹或者渲染材质的选择都可以在此完成。 #### 实际应用案例分析 假设我们需要制作一片飘雪场景,则可以在上述基础上进一步扩展思路: - 设置合适的重力影响让雪花自然下落; - 添加随机化因子使每片雪花具有独特外观与路径差异性; - 结合环境光照条件改变整体色调呈现更加真实的结果。 ```python # 这里展示的是伪代码逻辑示意而非实际可运行脚本 def create_snowfall(): emitter = niagara_system.add_emitter() # 定义基础物理特性 emitter.set_gravity(9.8) emitter.apply_randomization_to_position_and_velocity() simulator_graph.configure_rendering_material("snowflake_texture") simulator_graph.adjust_color_based_on_lighting_environment() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值