6.2k 6 分钟

# 前言 前几天跟同事讨论 Unity Lightmap ,在 Shader (自定义) 中是怎么取的,然后我说 Unity 在 Shader 中直接会给数据,调用 Unity 提弄函数直接采样就行了。 同事表示说,这个光照贴图 UV 呢?哪里取。 当时也是回答说是 Unity 直接提供的,虽说实际也差不多,不过后面下来又想了想,细节方面也已经记不清了。 再想到过去研究光照这块,早已经是多年前的事了,于是重新实际试了试,直接把光照烘焙这块都重新了解了下,简单做个记录。 主要使用工具有: Unity3D 2021.3.6f1 默认渲染管线 Forward RenderPath Standard...
12k 11 分钟

# 前言 之前其实有写一篇 『AssetBundle 的实际测试与总结』的文章,不过现在看了下,感觉漏了一些,而且不够完善。 但是感觉改又不好改了,于是新建了一篇文章,重新整理一下。 主要使用工具有: Unity3D 2018.4.36f1 Unity3D 2021.3.6f1 Microsoft Visual Studio 2022 Unity 工具:AssetBundles-Browser-1.7.0 # 功能简介 已知目前 Unity 主要提供了两种方式打 AssetBundle 包 一种是全打,根据整个项目资源的 AssetBundleName...
5.5k 5 分钟

# 前言 在上面 对项目字符串性能优化方式及测试 文章中,我查看了 StringBuilder 的源码,并总结出了 StringBuilder 的一般及自动扩容规则: 容量足够的情况下,通过 unsafe 方法进行指针及直接内存操作: 获取添加的字符串指针 获取字符数组待添加下标指针 调用 Buffer.Memcpy 进行内存拷贝进字符数组 如果后续容量不够,则进行动态扩容,不过动态扩容不是直接扩容字符数组,而是通过单向链表的方式: 将当前数据全部转移至『上一个』节点,然后自己创建一个新的字符数组进行处理。 简单来说,就是创建一个新的...
2.5k 2 分钟

# 前言 这两天又复习了下垃圾回收机制,在看到 析构函数 的时候,突然想到:析构函数是在真正垃圾回收时才会执行的,那么是否可以用这个来测试一个对象,什么情况下可以立即被垃圾回收?或者说变成垃圾对象。 例如,使用完毕后立即赋值为空,它变成垃圾对象了吗?还是其它什么时机才会。 测试方式为:在不同场景下,调用 GC.Collect ,并查看运行结果:析构函数是否被调用。 # 准备 工具: VS2022 .Net6.0 测试类: class TestClass{ public void DoSomething() {...
8.4k 8 分钟

# 0x01 前言 之前虽然有用过,但是并没有对其做个人的整理与总结,只大概知道哪个选项会造成什么情况,此处进行一次详尽的实际测试并总结。 # 0x02 工具 Unity2021.3.6f1 UnityProfiler 音效: # 0x03 设置选项 # 1. LoadType 分为三个选项,这个选择比较重要:直接决定音效在内存中的大小。 # 1). 加载即解压 (Decompress On Load) 性能最好,不过会占用更多内存。 在内存中的大小至少是选择 PCM 压缩格式在 ImportedSize 的预览大小 —— 因为在选择 Vorbis...
1k 1 分钟

# 0x01 前言 今天写文章的时候,突然想起用十六进制当做标题序号,于是再记录一下。 # 0x02 十六进制与十进制转换 首先,在十六进制中 1~16 数字代表有:0,1,2,3,4,56,7,8,9,A (10),B (11),C (12),D (13),E (14),F (15) 前位为 0 可以被忽略,例如: 0x10x011 0x0A0xA10 只有前一位有大于 1 的情况才会作计算,如: 0x1A261*16+10 后位为 0 则会使前一位成为进位数: 0xA00==101616+0+0=2560 对于进位来说,当前处于哪位,计算时就需要自身数值乘对应数量 N 的...
22k 20 分钟

# 1. 前言 在对组员代码进行审查时,经常碰到看着很不合理的字符串拼接操作,特别是对数组数据操作,也直接一个 for 循环,使用 + 号进行。 甚至有时候还是直接以 Text 作为主体,例如: for (int i = 0; i < soldierData.Skills.Count; i++){ m_soldiersDesc.text += soldierData.Skills[i].GetLvDesc();}在这个地方,首先 m_soldiersDesc.text 是一个主体,『+=』操作相当于 取值 + 字符串拼接 + 赋值 + 重构...
7.2k 7 分钟

# 前言 在今年 10 月份这次评审的时候,有问到图片设置相关的内容,当时感觉也是没回答多好。 例如,ETC1 与 ETC2 相比有什么差别? 回答的是 ETC1 不带 Alpha 通道,ETC2 带 Alpha 通道,其它就差不多 (实际上压缩质量也会高一点) 有问到如果 ETC 质量不佳怎么办?回答的是用 RGBA 设置看效果,而且还被追问除此之外呢?是否直接就用 RGBA 了? 下来后才想明白,意思应该是想问 ASTC 的,然而当时不知是觉得这个格式项目没有实际普及还是什么,根本没回答这个点... 甚至回答上都没提到 ASTC,虽然 ASTC 这格式肯定是知道,ios、android...
503 1 分钟

# 前言 这是以前制作人还在的时候,发起的一个 Demo,不过由于没有最终定性,因此只是让我在空余时间搞一搞。 游戏背景之类这里就不做介绍了。 这个 Demo 主要实现有: 利用腾讯地图 SDK 结合,实现定位 + 地图手动移动功能: TencentLocationSdk (定位) TencentMapSdk (地图) WebService API (路径信息) 同时整合了汉室复兴的战斗系统逻辑层,并修改为实时操纵移动、战斗,嵌入新的表现层 一套简单的 UI 管理 (由于只是 Demo,因此并未采用平移汉室复兴的 UI 框架,自己实现了一个以栈结构为基础的简单 UI 管理结构) #...
2.8k 3 分钟

# 前言 注:该问题可能仅适用于项目,或者公司该项目衍生版本 (该是没有了) 在给对面出了新包之后,由于我方测试都只有低端机,连刘海都没有,因此没有测出该问题。 后续由运营同步过来,显示效果如下: 描述的服务器问题可以忽略,那个是因为后台没开外网测试服导致。 然后我就看了下以前上一个项目组出给对面的白包效果: 这旧版本的刘海更大了!所以还是感觉新版如果把刘海也渲染进去,表现效果会更好一点,稍微查了一下,就得知刘海没有被渲染的原因是因为出包工程 Unity2018.4.36 这个版本没勾 『Render outside safe area』选项导致的,于是勾上重新出包。 #...