博客导览
前言写了一篇博客导览,方便后续本人使用。
杂乱小面筋 :面筋
语言基础
C#: C# 高级语法 , 关于CLR模型-GC
C++: c++ 和c11 , C++ 之STL , 关于类与对象
lua: unity热更新Lua
408基础
计算机网络:计算机网络基础 , TCP与UDP
OS:OS
Unity相关
基础与理论:
unity基础:unity引擎基础
3d数学:unity 3d数学理论
UGUI基础:UGUI问答
热更新AB:unity热更新AB包
代码与框架:
设计模式:设计模式 , 游戏设计模式 , FSM ObjPool ,IOC容器-Springboot
UI手机适配:UI手机适配
红点系统:Unity红点系统
物理 :关于游戏物理实现
帧同步:帧同步和状态同步
性能优化:
UI性能优化:unity UI优化 ,UGUI 优化- DrawCall ,OverDraw ,源码角度分析Rebuild和Rebatch
图形学相关 : unity Bulid-in 渲染管线
3 ...
unity2UE
_哔哩哔哩_bilibili
插件编写(待)这边我先开盖即用插件
Play设置编译模式
模式
用途描述
编译特点
文件/性能特点
DebugGame
开发过程中进行调试。在游戏中设置断点、查看变量值以及代码调试。
以调试模式编译,包含调试符号(debug symbols)。
可执行文件较大且运行速度较慢。
Development
开发过程中进行内部测试和验证。相比DebugGame模式会进行更多优化,同时保留调试能力。
启用优化选项以提高运行性能,保留部分调试信息。
运行性能更高,但仍便于问题排查。
DebugGame Editor
在Unreal Editor中调试游戏功能(与DebugGame模式类似,但专用于编辑器环境)。
编译包含调试符号,便于在编辑器中调试。
可执行文件较大,运行效率较低。
Development Editor
在Unreal Editor中进行开发测试。优化编辑器运行性能,同时保留调试能力(与Development模式类似)。
启用优化选项提高编辑器性能,保留部分调试信息。
编辑器运行更流畅,同时支持问题排查。
Shipping
发 ...
unity2UE
Parrot Game Sample Parrot 游戏示例本篇为Parrot Game Sample Parrot 游戏示例 的阅读笔记,意在我从unity转ue的一个Epic官方项目,也是在这个项目中熟悉ue的一些关键的概念。
Unity to Unreal Engine Overview
Level Blueprints.Level Blueprints in Parrot
Content/Maps/MainMenu/MainMenu
Level Blueprints 同 Scene 一样
关卡介绍UE4 World, Level, LevelStreaming
世界(UWorld)UWorld是UE里面最顶层UObject对象,代表了一个地图,里面存放各种UObject, AActor对象.
UWorld存在哪些地方在游戏里,大多数时候只存在一个UWorld对象。而在UE引擎编辑器里, 许多UWorld存在。比如当前正在编辑的关卡是一个UWorld, PIE模式存在一个独立的UWorld, 带着独立渲染Viewport窗口的编辑器工具也存在一个UWorld.
C++访问UWo ...
Lua 5.4 源码
前言Lua5.4源代码剖析 - 知乎
基本架构
以下是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),维护运行时环境、注册表等全局信息
...
UMG
前言Unreal Engine重要概念 - UMG(Unreal Motion Graphics)
Unreal Engine重要概念 - UMG(Unreal Motion Graphics) - 知乎
基本信息1. 控件(Widgets)控件是 UI 的基本单位,就像拼积木一样:
控件名称
说明
常见用途
Text
显示一段文字
显示血量、任务说明、名字等
Image
显示图片或图标
技能图标、头像、背景等
Progress Bar
进度条,可以用来显示某个数值变化的条
血条、经验条、技能冷却条
Button
可以点击的按钮
菜单选项、对话选项
Canvas Panel
允许你自由定位其他控件
通常用于主界面、HUD 布局
Vertical Box / Horizontal Box
用来垂直/水平排列控件
对话选项、物品列表、任务列表
Overlay
控件层叠显示(上下叠加)
技能图标 + 冷却进度 + 数量
2. 层级结构(控件树)UMG 的界面是“树形结构”的,最外层是容器(比如 Canvas Panel),内部再嵌套各种控件。
比如一个 ...
InsideUE4之GamePlayer架构
前言本文为大钊老师的学习UE4GamePlay架构的笔记以及阅读UE5.6的笔记,以下为自己的阅读笔记,本人熟悉unity引擎,以unity引擎角度去阅读这篇文章。
《InsideUE4》目录 - 知乎
写给Unity开发者的Unreal Engine开发指南 (扫盲) - 知乎
(99+ 封私信 / 80 条消息) Unity和UE5对比,以及踩坑记录 - 知乎
(注:本人现在是UE入门初学者,第一遍阅读粗略看基础架构)
开篇这边有一些准备链接
官方文档
UnrealEngine官方文档
视频平台
UnrealEngine官方Youtube频道
UnrealEngine官方优酷频道
Github地址
UnrealEngine官方Github地址
注意:因为UnrealEngine只是公开源码,但不是开源项目,依然是个私有项目。访问该Github地址,需要先链接你的Github到EpicGames的会员权限里,这个文档Linking your Github account说明了步骤。
基础概念文件结构
目录名称
描述
Binaries
存放编译生成的结果二进制文 ...
ECS
以下是GDC 2017上《》团队关于ECS(Entity-Component-System)架构的核心内容解析,综合多篇技术文档与开发者总结:
🧩 一、ECS架构的核心设计
基本概念
Entity(实体):仅作为唯一标识符(32位ID),用于管理生命周期和关联组件,不包含任何逻辑或数据。
Component(组件):纯数据容器,例如位置、输入状态、生命值等。组件无行为逻辑,仅定义实体的属性切片。
System(系统):无状态处理器,根据特定组件组合筛选实体并执行业务逻辑(如物理模拟、伤害计算)。
与传统OOP的对比
解耦优势:传统面向对象模型中,游戏对象(GameObject)聚合过多属性,导致模块耦合度高(如网络同步需处理无关的渲染数据)。ECS通过组件动态组合,使系统仅关注所需数据(如AFK系统仅需“连接组件+输入组件”,忽略AI机器人)。
性能优化:避免空Update调用,减少冗余计算。System仅遍历符合组件条件的实体,提升CPU缓存命中率。
⚙️ 二、关键技术与实践演进
Singleton Component(单例组件)
问题:全局状态(如玩家输入)需 ...
TCP与UDP
前言更改了计算机网络篇章,并整理更细化篇章tcp-udp独立一章了。
4.1 TCP 三次握手与四次挥手面试题 | 小林coding
TCP与UDP的区别
区别
UDP
TCP
是否连接
不连接
面向连接
是否可靠
不可靠
可靠传输(传输过程中会丢失,但会重发)使用流量控制和拥塞控制
连接对象个数
支持一对一,一对多,多对一,多对多交互通信。
仅支持一对一通信。
传输方式
面向报文
面向字节流
数据边界
保存数据边界
不保存数据边界
速度
速度快
速度慢
发送消耗
轻量级(因为 UDP 传输的信息中不承担任何间接创造连接,保证交货或秩序的信息。这也反应在包头大小。)
重量级
首部开销
首部开销小,仅8个字节
首部开销大,最小20字节,最大60字节。
有序性
不提供有序性的保证
TCP 保证了消息的有序性,即使到达客户端顺序不同,TCP 也会排序。
应用场景
IP电话,视频会议,直播,以及FPS竞技类的使用UDP帧同步。
要求可靠传输的应用例如文件传输,以及MMO类的TCP状态同步。
TCP基本格式
序列号:在建立连接时由计算机生成的随机 ...
关于类与对象
前言之前写过了CPP,C#,Lua的语言基础 现在把三种语言的类与对象整理到一起。
简介此部分讲解:类型 方法 继承
类别
描述
示例代码/概念
值类型
Struct默认继承自object
struct MyStruct { /* ... */ }
引用类型
Class默认继承自object
public class MyClass { /* ... */ }
接口
声明我是什么样子的类型(类型规范),不实现
public interface ILifeCycle { /* ... */ }
抽象类
不能实例化,可以包含抽象方法,可以暂时不实现接口,等待子类实现
public abstract partial class Actor : ILifeCycle { /* ... */ }
继承
Class只能继承1或0个基类,但可以继承多个接口
public class Mage : Actor, ILifeCycle, IDestroy { /* ... */ ...
UI手机适配
前言在工作中存在于安卓手机适配与异形屏适配问题:
Unity 如何实现UI适配?水滴屏、异形屏?Canvas如何配置
Unity实现屏幕黑边
Unity How to Lock Camera View to an Aspect Ratio and Add Black Bars
Unity 的UI适配原理 - 知乎
怎么解决适配要想知道适配什么首先得搞清美术的出图流程,我们一般来说的适配指的是UI适配,那美术在出UI资源的时候肯定是要根据设计分辨率来进行出图的,而不能美术A同学是以2480x2200 出图的,而美术B同学是以1920x1080出图的,这样的话两个UI切图放到一个界面就不协调和美观,所以这个设计分辨率肯定是有的。
所以到目前为止涉及到了3种分辨率
1、图片分辨率
2、设计分辨率
3、屏幕分辨率
适配的过程就是根据设计分辨率出图,然后将设计分辨率整体映射到屏幕上。
那映射的过程是我们要思考的问题。
目前常见有四种映射方式
假设 scaleX = 屏幕分辨率宽/设计分辨率宽,scaleY = 屏幕分辨率高/设计分辨率高,
1、铺满屏幕
这种方式是将设计分辨率宽拉伸scaleX倍 ...