分类: Unity

61 篇文章

thumbnail
记一次线上服务器问题排查过程
问题描述 前几天我们更新线上服务器,使用对应的新版客户端连接时,怎么都连不上,如果直接连接其他服,比如我们内部的测试服或者审核服,却一切正常。同时,如果使用老包连接服务器,也是正常的 这个问题查的头疼,每一步都超出我的理解范围 排查过程 首先第一步,我们在服务器接口的必经之路上增加了一个调试日志,只要消息到了服务端,就必定会触发这条日志,然后使用客户端发起请求,发现服务器日志并没有有效记录 但是!…
thumbnail
个人 Obsidian 文档访问指南
文档链接 https://obsidian.liuocean.com 最近发现 Obsidian 的文档可以有效的部署在自己的服务器上,同时像 DataView 这些好用的插件都能有效绘制,因此后续会逐步推送至上述链接中。但是由于 digitalgarden 部署的 web 资源会上传至 https://cdn.jsdelivr.net 上,刚好这个 cdn 被墙了。因此需要自行设置一下代理规则,…
thumbnail
如何设计打包流程
版本 修订记录 修订日期 1.0.0 Init 2023-3-13 目标 & 背景 项目的打包流程是一个细活,但是想设计一套清晰合理,并易于扩展的打包流程不是一件易事。如果公司项目很多,每个项目都设计一套项目自己有的打包流水线,显然是不合理的,那么针对这些情况,设计一套合理的打包流水线就非常有必要 在我司的环境下,我认为一个合理的打包流水线应当包含如下功能 我们这么做,并不能代表在你的项目…
thumbnail
Unity 调用 gradle task
目标 & 背景 在 Unity Andorid 多渠道管理 这篇文章中,有提到如何对 Android 多渠道打包进行合理的自动化划分,但是仍然有一个核心问题没有解决,如何在 Unity CI/CD 流程中,直接调用 gradle 中写好的 task 我们的目标是,所有打包流程全部在 Unity 中完成,不管用的是什么平台的 CI/CD 流程,最终仅仅是调用了 Unity 中一个静态方法 这…
thumbnail
Docusaurus 配合 DocFX
目标 & 背景 最近公司刚刚搭好 Docusaurus 文档环境,刚好在即刻看到 叫我三叔就行 用户提到的 DocFX 自动生成 C# API 的工具,此工具最终会生成一组 yaml 文件,然后进行 web 的绘制,这个和 Docusaurus 刚好冲突 现有的文档不兼容,着实有些遗憾,本篇文章会介绍如何兼容这两个工具 DocFxMarkdownGen 工具 这个也是一个开源工具,其整体思…
thumbnail
Docusaurus 出色的文档解决方案
目标 & 背景 在 内网 Package 管理 这篇文章中,有提到如何构建公司自有的框架,但由此就引发了一个新问题,那就是 文档,也是困扰了我很久的一个心病,一个符合我想象的文档工具应当包含如下功能 支持版本管理 一个服务对应 N 套框架文档 要支持博客类型的文章 不需要引入其他编辑器软件 最好支持多语言,给未来一个可能 因此花了很多时间对比市面上现有的文档解决方案,最后 Docusaur…
thumbnail
Unity Andorid 多渠道管理
版本 修订记录 修订日期 1.0.0 Init 2023-2-4 1.0.1 增加 IL2Cpp编译 2023-2-25 目标 & 背景 一般来说手游开发到一定进度,一定会涉及到大量的 native 交互问题,比如 重启 App、拉起支付、观看广告 等等,而这些大部分情况下都是第三方提供的 native SDK,而且有时候游戏需要接入的渠道多的离谱,再加上很多公司自己研发的 SDK 由于缺…
thumbnail
使用 InterpolatedString 减少字符串拼接的 GC
原视频链接 考虑到 Unity 准备在 2024 年前后,推出基于 dotnet Runtime 的版本,本篇文章也标记为 Unity 分类,等后面 Unity 准备好之后,再对新版的客户端进行改造 在日常开发过程中,字符串的拼接通常会占用大量的 GC,通常拼接字符串我们会使用如下几种方法 1. 1 + "/" + 2 + "/" + 3 2. StringBuilder 3. string.Fo…
thumbnail
C# 在不同环境下调用 shell 脚本
目标 & 背景 一般在开发一个项目时,往往会分出 N 多个 git 仓库,挨个手动更新会很麻烦,如果希望使用 C# 调用一些 git 相关的命令,通常会使用 Process 这类。由于某些仓库,如配表的导出,我们会写一个比较长的 shell 处理,此时就需要使用 Process 来调用 shell 这个时候问题就出现了,在 Windows/Mac 上,死活找不到 dotnet,两者的处理过…
thumbnail
如何设计技能系统
文档版本 修订记录 修订日期 1.0.0 init 2023-1-7 1.0.1 修复部分显示错误 2023-1-7 在你开始阅读这篇文章之前,建议优先了解如下内容,否则会导致部分段落无法理解 ET Luban Luban Excel 配表工具使用推荐及总结 Luban_Example 如何设计角色属性组件 CliToolkit 工具 推荐结合 hepta文档 一同进行阅读,方便理解数据是如何流转…
thumbnail
CliToolkit 工具
目标 & 背景 在游戏开发过程中,通常我们会为了更好的测试、校验逻辑正确性等,开发很多工具,最常见的就是 GM1 指令,以及一些为运营同学开发的运营工具,如:发送邮件,开启活动等等 这样我们就可以将工具分为两大类 游戏内建 GM 指令 部分工具可以直接丢进 Unity Editor 开发 运营工具(Web) 但是在实际开发过程中,我总是会碰到一些工具放在哪里都不合适,比如:正式服的 AB …
thumbnail
如何设计角色属性组件
目标 & 背景 本篇文章是对 ET1 中 NumericComponent 的介绍和补充,会围绕实际开发过程中可能会碰到的一些问题,给一个解题思路,并且会结合 Luban2 给出一个策划和程序都开心的方案 猫大曾经对 NumericComponent 做出过如下评论 单 NumericComponent 就可以完成 80% Moba 类游戏的设计了 属性组件作为游戏战斗中最底层的设计,拥有…
thumbnail
如何设计游戏登录流程
目标 & 背景 一般来说,游戏的开启,到登陆成功,进入游戏主页,中间的过程是十分复杂的,为了适应各种各样的突发情况、运营需求等,整体登录流程的设计,需要考虑到非常多的情况 我们期望达成的目标可以粗暴的分成下面三个分支,接下来我们一点点对功能进行补充 正常线上玩家 白名单 审核 开始之前 推荐客户端优先使用 HybridCLR1 和 YooAsset2 这两个工具来解决,代码热更和资源热更的…
thumbnail
定制 Unity BuildIn Package
目标 & 背景 在 内网 Package 管理 这篇文章中我们提到了如何自建 npm 工具包,整合 unity 官方 package 和公司自定义的私有 package 此时就会碰到一个新的问题,如果我们修改了 unity 内建的 package 时,就必须要考虑如何适配的问题 比如:项目中自定义的 UI 框架中,需要对现有的 com.unity.ugui 源码进行修改,此时需要使用项目自…
thumbnail
内网 Package 管理
目标 & 背景 一般来说,商业公司可能出于各种考量,会使用内网的开发环境,此时针对 Docker、NuGet、UMP 的服务全部都无法正常使用,同时公司也会自行维护一些自有的框架,也要解决包管理的问题 这篇文章希望通过介绍 SonaType Nexus1(下面简称为 Nexus) 的具体使用场景,补全一些网络上教程的空白,后面主要对 UMP 的使用场景进行介绍 从这些问题存在的角度上来看,…
thumbnail
C# Task 指南
目标 & 背景 前段时间在不同的技术交流群中,发现很多开发者在使用 async 时,多多少少会犯各种各样的错误,而这些错误想要纠正并不是三言两语能讲明白的,再加上很多资料也多少有些误导初学者使用的问题 希望本篇文章可以帮助你理解 async,并减少一些基础错误,本文中涉及的部分代码已经推送到 AsyncTutorial 仓库 理解 Task-like 引用 c#的await/async的优…
thumbnail
内存加密
目标 & 背景 抵御市面上常见的内存模糊搜索工具 没有致命性能问题 在手游的内存搜索工具上,一般来说 Android 需要 root 权限,iOS 需要越狱,但是在 PlayCover1出现后,打破了这个平衡 现在在 iOS 的版本下,对当前 iPA 进行砸壳后,使用 PlayCover1 运行,可以直接用 CE2 等工具,在开启 SIP3的情况下,可以直接对当前游戏进行内存搜索和修改,这…
thumbnail
UWA Pipeline 使用前的准备工作
Pipeline1 简介 后面简称为 ppl ppl 是集合了目前 UWA所有产品功能为一身的工具,可以用很小的成本,从一些真机自动化等机械性重复性劳动中解放出来,如:自动化性能测试、可靠性真机测试等等,当然里面功能很多,如果不了解 ppl,推荐去官网1 了解一下具体功能,或者找 UWA 的工作人员申请一下试用 目前整体使用下来,对我们项目而言,最重要的是解放重复性劳动,以及整体项目的性能把控上。…
thumbnail
粒子性能持续监测
最近受到 UWA 的启发,有一个非常不错的粒子性能持续检测的思路,这里需要使用使用 UWA 的 GOT,后续的完全自动化,需要使用 UWA 的 Pipeline 最终结果呈现如下,这里的每个间隔代表了每个特效的实际渲染耗时,可以非常直观的看到,到底哪个特效存在问题 目标 & 背景 测试项目完全与客户端工程隔离 美术资源完全复用 前两项是为了隔离美术工程和客户端工程,一般来说,美术不应该接触…
thumbnail
如何设计本地化组件
在我们项目开始初期,面临一个问题,就是本地化组件到底要不要重新造一次轮子。为了回答这个问题,首先我们需要仔细分析一下,本地化究竟需要哪些功能 业务逻辑动态扩容语言支持 运行时热切换语言,无需重启 对于代码赋值的部分,无法做到实时变化,需要等下一次赋值 任意多种资源类型的本地化 文字 图片等 配表字段自动本地化 代码动态赋值本地化 避免手输 string,提供动态生成翻译 key 常量代码工具 脚本…