博客导览
前言写了一篇博客导览,方便后续本人使用。
这篇为unity开发,ue开发暂且没维护
杂乱小面筋 :面筋
语言基础
C#: C# 高级语法 , 关于CLR模型-GC
C++: c++ 和c11 , C++ 之STL , 关于类与对象
lua: unity热更新Lua
lua源码阅读 Lua 5.4 数据结构
lua GC Lua Gc
408基础
计算机网络:计算机网络基础 , TCP与UDP
OS:OS
Unity相关
基础与理论:
unity基础:unity引擎基础
3d数学:unity 3d数学理论
UGUI基础:UGUI问答
热更新AB:Post not found: 0030-U3dAssetBundle
代码与框架:
设计模式:设计模式 , 游戏设计模式 , FSM ObjPool ,IOC容器-Springboot
UI手机适配:UI手机适配
红点系统:Unity红点系统
物理 :关于游戏物理实现
帧同步:帧同步和状态同步
性能优化:
UI性能优化:unity UI优化 ,U ...
Unlua 绑定
前言Unlua绑定UE底层原理,正在更新
图表分析图表1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556graph TB subgraph Lua层["🎯 Lua 层"] LS[Lua Scripts] LM[Lua Modules] LT[Lua Tables] end subgraph 绑定层["🔗 绑定层"] SE["静态导出<br/>📌 编译期"] DB["动态绑定<br/>⚡ 运行时"] RB["反射绑定<br/>🔄 按需加载"] end subgraph 注册层["📋 注册层"] RS[Registry System ...
ue 浅谈网络容器
前言研究PushModel与FastArray等
对于网络的容器的介绍
PushModelPushModel 是 Unreal Engine 中用于优化网络复制性能的一种机制。它的核心思想是将网络更新的触发从“轮询检查”改为“事件驱动”,从而减少不必要的复制开销。
传统复制模式的问题在传统的属性复制(Replication)中,Unreal 默认使用 “脏标记”(Dirty Flag) 机制:
每个可复制的属性在值发生变化时会被标记为“脏”。
每帧(或每个复制周期)服务器会检查所有对象的脏标记,将标记为脏的属性打包发送给客户端。
这种轮询检查的方式在属性多、变化少的场景下会产生不必要的性能开销。
PushModel 的工作原理PushModel 改变了这一流程:
主动标记:当某个可复制的属性值发生变化时,开发者需要显式调用 MarkPropertyDirty()或 MARK_PROPERTY_DIRTY()宏来通知网络系统:“这个属性需要复制”。
按需打包:网络系统只打包那些被显式标记为“脏”的属性,不再进行全量轮询检查。
自动清除:属性被成功复制后,其“脏”标记会被自动清除。
...
ue DS的思考
前言之前文章写了关于网络同步客户端的使用处理UE 联机
本篇主要为对于更底层的思考与处理,本篇没有对于底层代码的处理。
RPC与属性同步原文目录
一.关于Actor与其所属连接
Actor的Role是ROLE_Authority就是服务端么?
Owner是如何在RPC调用中生效的?
二.进一步理解RPC与同步
RPC函数应该在哪个端执行?
客户端创建的Actor能调用RPC么?
RPC与Actor同步谁先执行?
多播MultiCast RPC会发送给所有客户端么?
RPC参数与返回值
三.合理使用COND_InitialOnly
四.客户端与服务器一致么?
五.属性同步的基本规则与注意事项
结构体的属性同步
属性回调
UObject指针类型的属性同步
六.组件同步
核心要点核心要点解析
连接所有权是网络同步的基础• 客户端首次连接到服务器时,服务器会同步一个特殊的PlayerController到客户端,这个Controller持有网络连接信息(NetDriver、Connection等)
• 只有拥有连接的Actor才能获得ROLE_AutonomousPr ...
ue Q&A
前言收集ue相关问题。AI辅助。
QA1actor与uobject的关系 gc 委托有哪些种类 蓝图通信方式 UE有哪些线程 自定义事件与函数的区别 GAS c++的类型转换 静态多态和动态多态 虚继承 右值引用和移动语义 用过哪些脚本语言 大世界流式关卡加载有卡顿怎么解决 同一范围内有大量行为树运行如何优化 游戏内存溢出如何解决
QA2一、基础概念与引擎架构
Actor与Component的区别是什么?各自的应用场景?
Actor 可以独立存在于世界中有根组件的变换,可以设置位置、旋转、缩放 AActor* Actor = GetWorld()->SpawnActor();
必须依附于Actor 相对于父组件的相对变换,或相对于Actor的根组件的相对变换
SceneComponent的核心作用 变换层级系统(Transform Hierarchy)
变换层级系统(Transform Hierarchy)
插槽系统(Socket System)
变换空间转换
变换更新与同步
总结: 比起Actor 的Transform 有Mesh,Collider,physics
...
ue智能指针
前言C++类指针介绍了TObjectPtr TWeakObjectPtr TSoftObjectPtr TStrongObjectPtr
TSharedPtr TWeakPtr TUniquePtr TSharedRef
我来为您详细介绍虚幻引擎(Unreal Engine)中的这四个智能指针类型。这些是UE4/UE5 C++编程中核心的内存管理工具。
TSharedPtr(共享指针)
核心特性:引用计数、共享所有权
123456// 创建方式TSharedPtr<FMyClass> SharedPtr = MakeShared<FMyClass>(); // 推荐TSharedPtr<FMyClass> SharedPtr2(new FMyClass()); // 也可行但不推荐// 复制时引用计数+1TSharedPtr<FMyClass> AnotherPtr = SharedPtr; // 计数=2
特性 说明线程安全 是,引用计数操作为原子操作允许空值 是,IsValid() 或 ...
ue Lyra 动画系统(持续更新)
前言先占坑 后续补上 ALS 使用基础
前期准备放入资产,导入俩个插件
Animation Warping Animation
Locomotion Library
骨骼为 SK_Mannequin
基础移动动画蓝图
基础创建
创建ABP_CharacterBase 放入到 BP_Player 中,设置Level的GameMode为 MyGameMode。MyGameMode 的默认Pawn为BP_Player。
New State Machine –> Locomotion_SM
Inertialization 连接 惯性混合 注:这边先放着
加State : Idel Start Stop Cycle
状态机条件:
重载函数
BlueprintThreadSafeUpdateAnimation 蓝图线程安全更新动画
这个函数主要负责收集游戏数据,并将其处理为选择和驱动动画的有用信息。
线程安全函数的一个注意事项是,我们不能像在事件图中那样直接访问游戏对象的数据,这是因为其他线程可能在同一时间运行,他们可能正在改变这些数据。
相反,我们使用属性访问系统来访问 ...
Lua Gc
前言基本架构
以下是Lua 5.3.5源码在src目录下的代码结构整理,分为三大部分:虚拟机****核心功能、源代码****解析和预编译、内嵌库。每个部分包含核心文件及其作用说明,便于快速理解Lua源码的组织架构。
一、虚拟机核心功能部分负责Lua虚拟机的核心运行机制,包括内存管理、垃圾回收、字节码执行等。
文件
作用
lapi.c
提供C语言接口,实现Lua与C的交互
ldebug.c
Debug接口,支持断点、堆栈跟踪等调试功能
ldo.c
管理函数调用栈和协程栈
lfunc.c
管理函数原型(Proto)和闭包(Closure)的创建与销毁
lgc.c
垃圾回收机制(GC),包括标记-清除算法和分代回收策略
lmem.c
内存管理接口,负责动态内存分配与释放
lobject.c
对象操作函数,处理Lua中所有数据类型的通用操作(如类型判断、值转换)
lopcodes.c
定义虚拟机字节码的操作码(OpCode)及其编码格式
lstate.c
管理全局状态机(lua_State),维护运行时环境、注册表等全局信息
lstring.c
...
ue Slate底层源码(持续更新)
前言Slate是UMG的基础,部分流程需要根据源码阅读,目前只阅读了一小部分,后续更新中。
Slate语法分析UE5 Slate(1):Slate语法分析 - 知乎
基本类型
SLeafWidget:该控件没有子节点。
SCompoundWidget:该控件包含一个子节点(成员变量ChildSlot)
SPanel:该控件包含一个子节点数组(成员变量Children)。
基本用法12345678910111213141516171819202122232425262728class SLATE_API SButton : public SBorder{public: SLATE_BEGIN_ARGS(SButton) :_IsFocusable(false)//变量的默认值 { } //定义一个Slate变量,实际的变量命要在前面加一个下划线 SLATE_ARGUMENT(bool, IsFocusable) //结束定义 SLATE_END_ARGS() ...
ue GAS(持续更新)
前言基本架构介绍UE(Unreal Engine)中的 GAS(Gameplay Ability System)是一套非常强大且灵活的游戏玩法技能框架,尤其适合用来构建复杂的战斗系统、技能和状态管理。下面这个表格能让你快速把握其核心组件。
组件名称
核心功能简介
Ability System Component (ASC)
GAS的总协调中心,一个必须挂在Actor上的组件,负责管理所有GAS相关逻辑。
Gameplay Ability (GA)
定义一个完整的技能或能力(如攻击、跳跃、使用道具)的具体逻辑。
Gameplay Effect (GE)
代表一个效果或状态(如造成伤害、治疗、眩晕Buff),用于修改属性或添加/移除状态标签。
Attribute Set (AS)
定义和持有角色的数值属性(如生命值、魔法值、攻击力),并处理属性变化。
Gameplay Tag
一种层级标签系统,用于标记对象的状态、行为的分类,实现高效的逻辑判断和驱动。
GameplayCue(GC)
处理客户端表现,如特效、音效等
💡 核心概念详解为了让你更好地理解和 ...

