Unity 调用 gradle task
目标 & 背景 在 Unity Andorid 多渠道管理 这篇文章中,有提到如何对 Android 多渠道打包进行合理的自动化划分,但是仍然有一个核心问题没有解决,如何在 Unity CI/CD 流程中,直接调用 gradle 中写好的 task 我们的目标是,所有打包流程全部在 Unity 中完成,不管用的是什么平台的 CI/CD 流程,最终仅仅是调用了 Unity 中一个静态方法 这…
|
|
954 字
|
5 分钟
Unity Andorid 多渠道管理
版本 修订记录 修订日期 1.0.0 Init 2023-2-4 1.0.1 增加 IL2Cpp编译 2023-2-25 目标 & 背景 一般来说手游开发到一定进度,一定会涉及到大量的 native 交互问题,比如 重启 App、拉起支付、观看广告 等等,而这些大部分情况下都是第三方提供的 native SDK,而且有时候游戏需要接入的渠道多的离谱,再加上很多公司自己研发的 SDK 由于缺…
|
|
2908 字
|
24 分钟
使用 InterpolatedString 减少字符串拼接的 GC
原视频链接 考虑到 Unity 准备在 2024 年前后,推出基于 dotnet Runtime 的版本,本篇文章也标记为 Unity 分类,等后面 Unity 准备好之后,再对新版的客户端进行改造 在日常开发过程中,字符串的拼接通常会占用大量的 GC,通常拼接字符串我们会使用如下几种方法 1. 1 + "/" + 2 + "/" + 3 2. StringBuilder 3. string.Fo…
|
|
746 字
|
8 分钟
C# 在不同环境下调用 shell 脚本
目标 & 背景 一般在开发一个项目时,往往会分出 N 多个 git 仓库,挨个手动更新会很麻烦,如果希望使用 C# 调用一些 git 相关的命令,通常会使用 Process 这类。由于某些仓库,如配表的导出,我们会写一个比较长的 shell 处理,此时就需要使用 Process 来调用 shell 这个时候问题就出现了,在 Windows/Mac 上,死活找不到 dotnet,两者的处理过…
|
|
1247 字
|
8 分钟
CliToolkit 工具
目标 & 背景 在游戏开发过程中,通常我们会为了更好的测试、校验逻辑正确性等,开发很多工具,最常见的就是 GM1 指令,以及一些为运营同学开发的运营工具,如:发送邮件,开启活动等等 这样我们就可以将工具分为两大类 游戏内建 GM 指令 部分工具可以直接丢进 Unity Editor 开发 运营工具(Web) 但是在实际开发过程中,我总是会碰到一些工具放在哪里都不合适,比如:正式服的 AB …
|
|
862 字
|
4 分钟
如何设计游戏登录流程
目标 & 背景 一般来说,游戏的开启,到登陆成功,进入游戏主页,中间的过程是十分复杂的,为了适应各种各样的突发情况、运营需求等,整体登录流程的设计,需要考虑到非常多的情况 我们期望达成的目标可以粗暴的分成下面三个分支,接下来我们一点点对功能进行补充 正常线上玩家 白名单 审核 开始之前 推荐客户端优先使用 HybridCLR1 和 YooAsset2 这两个工具来解决,代码热更和资源热更的…
|
|
1717 字
|
7 分钟
定制 Unity BuildIn Package
目标 & 背景 在 内网 Package 管理 这篇文章中我们提到了如何自建 npm 工具包,整合 unity 官方 package 和公司自定义的私有 package 此时就会碰到一个新的问题,如果我们修改了 unity 内建的 package 时,就必须要考虑如何适配的问题 比如:项目中自定义的 UI 框架中,需要对现有的 com.unity.ugui 源码进行修改,此时需要使用项目自…
|
|
426 字
|
2 分钟
内存加密
目标 & 背景 抵御市面上常见的内存模糊搜索工具 没有致命性能问题 在手游的内存搜索工具上,一般来说 Android 需要 root 权限,iOS 需要越狱,但是在 PlayCover1出现后,打破了这个平衡 现在在 iOS 的版本下,对当前 iPA 进行砸壳后,使用 PlayCover1 运行,可以直接用 CE2 等工具,在开启 SIP3的情况下,可以直接对当前游戏进行内存搜索和修改,这…
|
|
1403 字
|
8 分钟
基于 ECS 设计下的加载管理
之前在 Addressable 迁移 YooAsset 这篇文章中做了分层设计的相关介绍,本文为分层中详细的解析,以及为什么要这么设计 目标 & 背景 我们当前使用的框架,需要设计成一个基础库,以 Package 的形式进行使用,方便公司中其他项目后续的接入,所以泛用性要求很高,此外,开发者的水平可能会参差不齐,可能会有应届生刚刚接触 Unity 等现实因素的考量,因此我们需要达成如下目标…
|
|
2075 字
|
24 分钟
为什么抛弃了 Addressable
外链 多人协作灾难 自动 Import git hook 禁止提交 Missing Reference 资源地址撞 key 源码异常难懂 偶现的首包 ab 错误 https 校验问题 动态切换 CDN 源 Addressable 做的好的地方 YooAsset 个人使用和关注 Addressable 有段时间了,对 Addressable 的缺点容忍了很久,最终在一次打包时加班到 11 点后,决定…
|
|
1733 字
|
7 分钟
如何有效的对 UGUI Button 成组排队
多指触控带来的问题 连续点击重入的问题 解决思路 按钮成组 框架统一分发 Popup 的新问题 后续可能会碰到的问题 单个 UI 粒度的防重入 红点、新手引导异步化 循环列表异步化 点击通用化 一般来说,对按钮的事件监听通常采用 AddListener 的方式,有些项目可能会对此处的处理函数额外做一层包装,做一些统一处理,最后再执行具体的逻辑 无论上面哪种方式,想要将按钮的点击事件完美成组排队,都…
|
|
1810 字
|
12 分钟
Luban Excel 配表工具使用推荐及总结
相关链接 为什么使用 Luban 核心功能介绍 数据有效性验证 生成模板 复杂类型的填写 数据及定义过滤 数据反倒 本地化 其他 流程推荐 导出脚本选择 test、dev、release auto_validation watch 几乎每个游戏的制作过程中都少不了和配置打交道的需求,有的是用 Unity 自带的 ScriptObject 进行存储,或者更多的是使用 Excel 等表格工具,二次导出…
|
|
2031 字
|
8 分钟
[转] Unity I18N 小探
前略 从 key-value 表到 I2 Localization Rosetta - 关于本地化问题的反思和实现 只有这些了吗 结语 参考 原文地址 前略 软件要分发给使用不同语言和处于不同地区的人员,需要从多个方面处理从而使这些人能以自己文化背景下熟知的方式来使用。这包括了最基本的文本的翻译,也有一些通用习俗和约定的问题(如不同国家和地区的日期时间的表示等)。而本地化(L10N)和国际化(I1…
|
|
6213 字
|
23 分钟
ET 热更可用的命令行GM指令方案
起因 尝试的方案 iOS 捷径 GM UI UnityIngameDebugConsole 具体实现 ConsoleMethod Hotfix 监听 IGmCodeHandler 展示ID 的指令示例 GMCodeComponent 总结 起因 最近项目需要做游戏的 GM 指令,思前想去,想了几个方案后, 最后决定使用 UnityIngameDebugConsole提供的 GM 指令,然后封装一个…
|
|
759 字
|
6 分钟
获取Unity GameView 分辨率大小
起因 代码部分 起因 项目需要做不同机型的分辨率的适配,UI 的适应还好说,GameView 修改分辨率之后,UI 就自适应了,但是场景中 Camera 的 Size 适配还需要自己动手做些工作 之前代码是直接获取Screen.width 和 Screen.height,但是当在Editor 下, 修改了GameView 的分辨率时,获取到的值是不对的 代码部分 Unity 源码参考 这里需要写两…
|
|
273 字
|
4 分钟
Unity 调用 Android Native 使用及排坑
起因 使用 路径参考 MainActivity.java AndroidManifest.xml MobileHelper.cs 排坑 起因 最近项目需要统计手机的运营商和 WiFi 、4G 等情况,这个时候必须调用机器的 Native 代码 使用 这里不对如何获取运营商做详细的介绍,主要介绍如何完成 Unity 和 Android Native 之间的交互 运营商代码参考 路径参考 Assets…
|
|
454 字
|
7 分钟
Addressables 异步对实例化物体的生命周期影响
起因 await 加载 await 加载 + 手动 active 回调方式加载 起因 最近和小伙伴交流的时候突然注意到, Addressable 在异步实例化物体时,Unity 生命周期也不太相同 下面为各种情况下的测试数据 await 加载 加载脚本 public class TestAddressable : MonoBehaviour { private async Task Awake()…
|
|
306 字
|
4 分钟
URP + PostProcessing + 2D Renderer 使用
起因 基础配置 Unity Universal RP Package 2D Renderer 配置 思路及实现方式 Layer Camera Volume UI Blur 其他效果 已知的坑 Cinemachine 不会切换 VCam 起因 最近在搞 URP,需要用到 UI 背景 Blur的效果,突然想起 PostProcessing 中本身可以实现这个效果 基础配置 Unity 我们使用的版本为…
|
|
1173 字
|
6 分钟
Unity Timeline 自定义脚本
起因 实现效果 具体实现 Track Behaviour Clip Mixer 起因 最近要用 Timeline 对游戏的进程进行编排,需要给游戏中的字幕添加动态的效果 有关 Timeline 的自定义功能介绍的相关资料较少,花了一段时间才搞清除创建一个自定义的 Clip 需要额外定义4个脚本 实现效果 具体实现 Track 首先创建一个 TextSwitcherTrack.cs 文件 这个是 T…
|
|
424 字
|
6 分钟
ET & Addressables SpriteAtlas 图集解决方案
起因 如何切换SA 如何创建SA SA组件介绍 Addressable Importer Late Binding 解决方案 资源卸载 起因 最近想优化一下UI Batches,发现了Unity 的SpriteAtlas组件(后面简称SA),但是用的时候发现了诸多问题,所以开个博客记录一下 如何切换SA Sprite Packer Mode 切换成Always Enabled 如何创建SA 在Pr…
|
|
441 字
|
3 分钟