thumbnail
如何有效的对 UGUI Button 成组排队
多指触控带来的问题 连续点击重入的问题 解决思路 按钮成组 框架统一分发 Popup 的新问题 后续可能会碰到的问题 单个 UI 粒度的防重入 红点、新手引导异步化 循环列表异步化 点击通用化 一般来说,对按钮的事件监听通常采用 AddListener 的方式,有些项目可能会对此处的处理函数额外做一层包装,做一些统一处理,最后再执行具体的逻辑 无论上面哪种方式,想要将按钮的点击事件完美成组排队,都…
thumbnail
Luban Excel 配表工具使用推荐及总结
相关链接 为什么使用 Luban 核心功能介绍 数据有效性验证 生成模板 复杂类型的填写 数据及定义过滤 数据反倒 本地化 其他 流程推荐 导出脚本选择 test、dev、release auto_validation watch 几乎每个游戏的制作过程中都少不了和配置打交道的需求,有的是用 Unity 自带的 ScriptObject 进行存储,或者更多的是使用 Excel 等表格工具,二次导出…
thumbnail
博客后续规划和新的呈现方式
Obsidian Heptabase Wordpress 已经大概 1 年左右没有好好维护这个博客了,主要原因还是因为日常记录的方式变了,由之前的 Blog 记录,变成了 Obsidian,再后来现在又开始使用 Heptabase 来进行记录 但是上面这两个方式虽然解决了知识与知识之间的关系的展示,却在分享方面做的并不尽如人意,所以后续计划将一些有趣的内容,以及日常开发的感悟,依然采用博客的形式进…
thumbnail
ET 热更可用的命令行GM指令方案
起因 尝试的方案 iOS 捷径 GM UI UnityIngameDebugConsole 具体实现 ConsoleMethod Hotfix 监听 IGmCodeHandler 展示ID 的指令示例 GMCodeComponent 总结 起因 最近项目需要做游戏的 GM 指令,思前想去,想了几个方案后, 最后决定使用 UnityIngameDebugConsole提供的 GM 指令,然后封装一个…
thumbnail
获取Unity GameView 分辨率大小
起因 代码部分 起因 项目需要做不同机型的分辨率的适配,UI 的适应还好说,GameView 修改分辨率之后,UI 就自适应了,但是场景中 Camera 的 Size 适配还需要自己动手做些工作 之前代码是直接获取Screen.width 和 Screen.height,但是当在Editor 下, 修改了GameView 的分辨率时,获取到的值是不对的 代码部分 Unity 源码参考 这里需要写两…
thumbnail
Unity 调用 Android Native 使用及排坑
起因 使用 路径参考 MainActivity.java AndroidManifest.xml MobileHelper.cs 排坑 起因 最近项目需要统计手机的运营商和 WiFi 、4G 等情况,这个时候必须调用机器的 Native 代码 使用 这里不对如何获取运营商做详细的介绍,主要介绍如何完成 Unity 和 Android Native 之间的交互 运营商代码参考 路径参考 Assets…
thumbnail
Addressables 异步对实例化物体的生命周期影响
起因 await 加载 await 加载 + 手动 active 回调方式加载 起因 最近和小伙伴交流的时候突然注意到, Addressable 在异步实例化物体时,Unity 生命周期也不太相同 下面为各种情况下的测试数据 await 加载 加载脚本 public class TestAddressable : MonoBehaviour { private async Task Awake()…
thumbnail
URP + PostProcessing + 2D Renderer 使用
起因 基础配置 Unity Universal RP Package 2D Renderer 配置 思路及实现方式 Layer Camera Volume UI Blur 其他效果 已知的坑 Cinemachine 不会切换 VCam 起因 最近在搞 URP,需要用到 UI 背景 Blur的效果,突然想起 PostProcessing 中本身可以实现这个效果 基础配置 Unity 我们使用的版本为…
thumbnail
Unity Timeline 自定义脚本
起因 实现效果 具体实现 Track Behaviour Clip Mixer 起因 最近要用 Timeline 对游戏的进程进行编排,需要给游戏中的字幕添加动态的效果 有关 Timeline 的自定义功能介绍的相关资料较少,花了一段时间才搞清除创建一个自定义的 Clip 需要额外定义4个脚本 实现效果 具体实现 Track 首先创建一个 TextSwitcherTrack.cs 文件 这个是 T…
thumbnail
Unity Now 性能优化笔记
Hash the value instead Reduce Hierarchy complexity Accelerometer Frequency Transforming Object 原视频地址 以下是部分内容 Hash the value instead // Assigning values to properties as a string animator.SetTrigger("J…
thumbnail
ITMS-90809 问题处理及部分自动化
起因 解决方案 微信通知 起因 最近在打包上传 iOS 项目时发现了下面的报错提醒, UIWebView 被弃用了 解决方案 首先用下面的指令在 Xcode 项目中查看那个模块使用了 UIWebView,如果是 libiPhone-lib.a 文件,就继续往下看,如果不是,就需要考虑将引用的模块移除 grep UIWebView * -R 仓库链接 仓库中的 README 怎么使用写的很详细,这里…
thumbnail
ET & Addressable 热更代码加密方案(修正版)
起因 AES 加密 Hotfix.dll + Unity Security 加密 方案介绍 存在的问题 混淆方案 方案介绍 存在的问题 最终方案 实现步骤 分离 Hotfix 创建 增加引用 工具编写 编译 导入工具 加密工具 修改加载流程 修改 CLR Binding 最终效果 最后 起因 最近项目要搞代码加密,4.0+ 的 ET 非常不适合做加密方案,研究了很久,最后找到如下方案 这篇文章会包…
thumbnail
ET & Addressable 热更代码加密方案
起因 思路 热更层加密 非热更层加密 资源加密 生成加密 key 的方法 代码 Bug 修复 起因 最近研究了一下 ILSpy,如果 Hotfix.dll 文件不做加密,可以原封不动的还原出来,而且 Addressable 组件一直也没提供加密的方法,很困扰 之前一直陷入单独对 AssetBundle 包进行加密的圈子里,但是如果只需要保证代码安全,可以仅对 dll 文件进行加密 思路 热更层加密…
thumbnail
Unity ScrollView 子物体拖拽事件阻挡
起因 思路 组件代码 使用参考 参考链接 起因 最近项目需要用到 Drag Icon,同时也是 ScrollRect 的组件,但是 Icon 的拖拽事件和 ScrollRect 的拖拽事件相互冲突 刚好看到了上面链接的例子,但是上面的例子有些不跟手,我把代码统一了一下接口,并加入新的跟随,方便日后新的组件使用 思路 这里的思路非常简单,如果需要拖拽 ScrollRect 下的 Icon,那么在 I…
thumbnail
[转] Optimizing Unity UI
A guide to optimizing Unity UI UI Source Code Fundamentals of Unity UI Terminology Rendering details The Batch building process (Canvases) The rebuild process (Graphics) Layout rebuilds Graphic rebuil…
thumbnail
ET & Addressables SpriteAtlas 图集解决方案
起因 如何切换SA 如何创建SA SA组件介绍 Addressable Importer Late Binding 解决方案 资源卸载 起因 最近想优化一下UI Batches,发现了Unity 的SpriteAtlas组件(后面简称SA),但是用的时候发现了诸多问题,所以开个博客记录一下 如何切换SA Sprite Packer Mode 切换成Always Enabled 如何创建SA 在Pr…
thumbnail
DOTween Awaiter
使用 代码 原文 使用 await transform.DOLocalMoveX(3f, 2f).ToAwaiter(); 代码 将下面的代码放到项目中即可 public static class DOTweenAwaiterHelper { public static DOTweenAwaiter ToAwaiter(this Tween tween, CancellationToken can…
thumbnail
Unity Analytics 缺少AnalyticsSessionInfo报错
环境 报错内容 解决方案 环境 名字 版本 Unity 2019.2.3f1 MacOS 10.15.1 Analytics 3.4.0 报错内容 The name 'AnalyticsSessionInfo' does not exist in the current context 安装Analytics包之后,会一直显示上面的错误 解决方案 在manifest.json 文件中添加下面的代码…
thumbnail
Unity 打包iOS usymtool 占满内存导致系统崩溃
起因 当前环境 解决办法 起因 最近在打包iOS时,经常会因为因为内存溢出导致电脑死机,无法完成打包,很头痛,一直以为是苹果的锅 在内存检视中可以看到,后台创建了N多个usymtool,每个占用1~2G的内存 当前环境 版本 Unity 2019.2.3f1 MacOS 10.15.1 解决办法 在XCode项目中Build Phases有一个Process symbols,会运行项目下的proc…
thumbnail
ET & Addressable C# 热更方案分享
ET 简介 改造内容 打包方式 配表流程 Addressable 简介 Addressable Import 工具 注意事项 ILRuntime 简介 注意事项 xlsx2json 简介 注意事项 代码部分 导入顺序 Addressable 基础配置及工具 Addressables Profile Addressable Assets Settings Addressable Import Gro…