Unity Overdraw 分析
在 Unity 中查看界面(UI)的 Overdraw(过度绘制)情况,可以使用 Unity 的 Scene 视图 + Frame Debugger 以及 Profiler 和 RenderDoc 工具。下面是详细方法: ✅ 方法一:Scene 视图中的 Overdraw 模式(推荐)操作步骤: 打开 Unity 编辑器。 切换到 Scene 视图(不是 Game 视图)。 在 Scene 视图左上角点击 “Shaded” 下拉菜单。 选择 “Overdraw” 模式。 ✅ 在该模式下,颜色越亮说明重叠的次数越多,白色代表非常多次重叠。 注意事项: 这个模式主要对 UI 的渲染顺序 和 透明图片叠加 非常直观。 你需要选中 Canvas 或 UI 元素所在的层级来定位问题。 ✅ 方法二:Frame Debugger(推荐用于查找具体调用)操作步骤: 打开 Unity 的 Window > Analysis > Frame Debugger。 点击左上角的 Enable。 运行游戏,进入你要查看的 UI 界面。 在 Frame Debugger...
Unity Scene 优化
我做的编辑器拓展开发,卡顿是出现在通过配置生成上万个带指向的3d球体和linerenderer,根据每个点的配置信息来设置球体的旋转偏量,3d空间位置,两个点之间通过linerenderer连接,创建过程耗时很长,卡顿是出现在编辑器静态界面,而非运行状态。当前面临的 编辑器卡顿问题,本质上是因为: ✅ 在 非运行时的编辑器模式(EditMode)中批量生成上万个带有 Mesh 和 LineRenderer 的 GameObject,Unity 会: 每次 GameObject.Instantiate() 都触发内部注册与序列化 每个 LineRenderer 或 Transform 修改都会立即记录在场景状态中 在主线程阻塞执行,触发 大量 Hierarchy 刷新、Inspector 重绘、Undo 缓存注册、序列化数据写入→ 导致 Unity 编辑器卡死或极度卡顿 ✅ 针对性优化建议(编辑器扩展模式专属) 🧱 一、核心优化原则 问题来源 优化手段 每个 GameObject 实时创建、注册 Undo、序列化 ✅ 使用...
Unity 后置界面截图代替
这是一个非常实用且高级的 UI 性能优化技巧,尤其适用于多层 UI 堆叠、全屏窗口频繁切换的游戏中,比如背包、商店、角色等互相遮挡但不会频繁更新的界面。 🧠 目标描述 将被遮挡的 UI 页面(非焦点)截图为一张静态图片,然后只显示截图,暂时不渲染真实 UI 元素,以降低 DrawCall 和 Canvas Rebuild 负担,充分释放 GPU 渲染资源。 ✅ 技术实现步骤(Unity UGUI)我们以“将后置界面截图 + 替换显示 + 隐藏原始 UI”为例讲解: 🧱 Step 1:截图后置 UI(RenderTexture 或 ReadPixels)123456789101112131415public Texture2D CaptureUIScreen(RectTransform targetRect){ // 1. 获取 UI 区域在屏幕空间的位置 Vector3[] corners = new Vector3[4]; targetRect.GetWorldCorners(corners); Rect rect = new...
Unity 打图集 - 合批减少DrawCall
在 Unity 中,通过打图集(图集打包)+ Canvas 优化策略可以有效实现 UI 合批(Batching),从而减少 DrawCall 提高性能。下面是详细说明和实战指导: 🧩 一、为什么打图集能减少 DrawCall?Unity UI 使用的是基于 Canvas 的渲染系统,同一个材质(图集)+ 同一个 Canvas + 无深度遮挡排序冲突 时,可以自动合并为一个 DrawCall。 举个例子: 如果你有 100 个 UI 元素,使用的是 相同图集的 Sprite,且放在 同一个 Canvas 下,就只需要 1 个 DrawCall。 但如果他们用的是不同贴图、不同材质、不同 Shader,就需要多个 DrawCall。 📦 二、图集如何打包(使用 Unity 自带 Sprite Atlas)✅ 步骤一:创建 Sprite Atlas 图集 Assets > Create > 2D > Sprite Atlas 给图集命名,例如 UIAtlas_Main 选中图集,点击 Inspector 中的 Objects for Packing...
Unity Rebuild 分析
在 Unity 的 UI 系统(UGUI)中,Rebuild 是指 UI 元素在生命周期中的某些阶段发生变化时触发的一种“重建”流程。频繁的 Rebuild 会带来性能问题,尤其在界面复杂或频繁更新时。下面是关于 Rebuild 的全面分析: 🧩 什么是 Rebuild?UI 元素发生如下变化时,会触发 Rebuild: 位置/大小发生变化(RectTransform 变动) 内容变动(Text 文本变了) 属性变动(颜色、字体、sprite 等) Unity 会将这些 UI 元素加入到一个队列,在 Canvas 的渲染阶段进行一次“重建”。 🔍 Rebuild 的类型(对应 CanvasUpdate 枚举)Unity 的 Rebuild 会按照 5 个阶段进行处理,分别是: 12345678public enum CanvasUpdate { Prelayout, Layout, PostLayout, PreRender, LatePreRender, MaxUpdateValue} 这些阶段由...
部门
游戏开发中各组件的协作流程在游戏开发中,客户端、Web、服务器和数据库这几个核心组件通过协同工作来实现完整的游戏体验。以下是它们的协作方式: 1. 基本协作架构123玩家操作 → 客户端 → (Web层) → 游戏服务器 → 数据库 ↑ ↓ ↑ ↓ └────────┴──────────────┴─────────────┘ 2. 各组件职责与协作细节客户端 (Client) 职责:负责游戏画面渲染、玩家输入处理、本地逻辑计算 协作方式: 向服务器发送玩家操作(移动、攻击等) 接收服务器同步的游戏状态 对于网络游戏,客户端通常不存储关键数据(如玩家等级、装备) Web层 (可选) 职责: 账号系统、支付系统、公告系统 游戏官网、社区论坛 CDN资源分发 协作方式: 处理用户注册/登录(通常通过OAuth等协议) 为客户端提供静态资源(游戏更新包、素材等) 与游戏服务器交互获取玩家基础数据 游戏服务器 (Game...
登录流程
123456789101112LoginWithProcess()└── LoginWithToken() └── LoadPlayerWithPropType() └── RegToPublisher() └── ParallelRequest() ← 当前方法 ├── 新手签到 ├── CV锁状态 ├── 排行榜数据 ├── 邀请代理信息 ├── IP分析 ├── 新手任务 └── 其他游戏数据 123456789101112131415LoginDefine.LoginType = { Common = 1,--正常登陆 Logout = 2,--登出登陆 Reconnect = 3,--重连 AutoFacebook = 4,--fb自动登录,在游戏内返回登陆页面 AutoLine =...
提升
做demo 看技术文章 逛社区,看别人的问题和解决方案 研究GitHub开源项目 学习新技术,看教程 刷boss直聘,关注市场技术需求和趋势 根据unity...
社保和公积金的补缴问题
离职后,社保和公积金的补缴问题与个人权益密切相关,以下是需要关注的要点及原因解析: 社保和公积金的补缴问题一、需要自己补缴的情况 社保(养老保险、医疗保险等) 断缴影响:社保缴费年限直接影响养老金的领取资格(累计15年)和医保报销(断缴后次月停保)。 补缴方式: 以灵活就业身份参保:可单独缴纳养老和医疗(费用全额自付,比例约为当地基数的20%-30%)。 通过新单位续缴:离职后尽快入职新单位,由新公司接续缴纳(避免断缴)。 补缴政策:部分地区允许补缴断缴部分(需咨询12333社保热线),但可能需支付滞纳金。 住房公积金 断缴影响:影响公积金贷款资格(通常需连续缴存6-12个月)。 补缴方式: 以灵活就业身份缴存(仅部分城市开放)。 由新单位续缴,无法个人补缴断缴部分(个别城市允许单位申请补缴)。 企业未足额缴纳 若原单位未按实际工资缴纳社保,可要求补缴差额(通过劳动仲裁或社保稽核)。 二、为什么要补缴? 养老保险 ...
GitHub action 自动发布博客
完整推荐如下: ✅ 推荐版本(添加 clean、修正路径) name: Deploy Hexo Blog to GitHub Pages on: push: branches: - master jobs: build-deploy: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 18 - name: Install Hexo CLI run: npm install -g hexo-cli - name: Install dependencies run: npm install working-directory: blog - name: Clean previous builds run:...