低质的文章又来了
之前好像写过一个相关文章,某些原因发不出
总之我如果不亲身处理这个目录,十个项目,十个都不会处理,真心不知道这些项目是怎么维护的
多少年了,官方处理了没有?
(总之,世界上就是一个巨大的草台班子)
我写的
<找不到了>
大神写的 -无幻
Unity TextMesh Pro 组件的 Resources 文件夹打包_textmeshpro assetbundle-CSDN博客
大神介绍了这种做法:
损失点性能使用反射来对其进行赋值,因为只需赋值一次,所以性能可以忽略。将 Resources 文件夹改名成其他名称,然后把TMP_Settings.asset文件移到 AssetBundle 预制读取目录。最后在游戏资源检测完毕后,调用如下代码:(见上面链接)
但是
但是(*&(*&**……&*
- 不建议像大神改内核,对于新手更容易导致项目的其他问题
- 删除一些Resources的内部文件,最小化,或者是比较简单的方案
- 大神建议了牺牲性能,换来最终的AB打包结果,但如果你的项目不需要AB打包呢;又如果是牺牲一些Assetbundle的冗余,换来小项目的稳定也未尝不是一个合理的牺牲
- 有没有人提供一些最小化TextMeshPro,优化过的TextMeshPro; 我也经常这么个干;但是缺点是最新版本无法同步,或者当前代码就有一些隐含BUG,对项目的稳定更不利
总之就是怎么选都是难,也不能怪其他团队草台,因为真的团队内没人敢改,无人敢负责
TMP Res目录的处理
对于我来说,就是加了一个Text,是为了测试材质和着色器(上个文章有说)是否能支持旧的 Legacy的普通Text 和这个新的TextMeshPro (实测,是有2个uv的()
但是我也已经在旧的普通的 Text 实现了两个UV,
所以以下基本对于我来说,都可删,因为不需要
建议保留
| 文件/目录 | 作用 | 是否可删 |
|---|---|---|
TMP Settings.asset | TMP 全局配置,默认通过Resources.Load加载 | 不要删 |
Shaders/ | TMP 文本渲染用到的 Shader | 不要删 |
Fonts & Materials/LiberationSans SDF* | 默认英文字体和材质 | 项目完全不用可删,但建议先检查引用 |
Sprite Assets/EmojiOne* | 默认 Emoji 精灵资产 | 不用 Emoji 可删 |
Style Sheets/Default Style Sheet* | 默认文本样式表 | 不用富文本样式可删 |
Color Gradient Presets/ | 默认颜色渐变预设 | 不用可删 |
LineBreaking Leading/Following Characters* | 换行规则 | 建议保留,删了可能影响文本排版 |
TMP Examples & Extras相关示例 | 官方示例场景、材质、字体 | 可以删 |
TMP Settings必须在Resources里,这是 TMP 官方要求。Resources下的资产在打包时不会被 Unity 自动剔除,所以这里越干净,最终包体越安全。
可以优先清理的
如果你是通过Window > TextMeshPro > Import TMP Essential Resources导入的资源,那么其中很多默认字体、示例材质、Emoji、样式表、渐变预设,通常只是“默认示例”。
可以这样判断:
- 在 Project 窗口搜索
t:TMP_FontAsset,看哪些字体被预制体、场景或TMP Settings引用。 - 搜索
t:TMP_SpriteAsset,确认EmojiOne是否被引用。 - 搜索
t:TMP_StyleSheet,确认默认样式表是否被引用。 - 搜索
t:TMP_ColorGradient,确认渐变预设是否被引用。 - 打开
TMP Settings.asset,检查Default Font Asset、Default Sprite Asset、Default Style Sheet、Default Color Gradient Presets Path是否还指向这些资源。
如果某个资源没有被任何地方引用,也没有被TMP Settings设为默认值,就可以删。
不建议直接改 PackageCache 里的 Resources
如果你看到的是Library/PackageCache/com.unity.textmeshpro或类似路径下的Resources,不要直接删。那是包缓存,更新包后还会回来,也可能导致包校验异常。
更稳妥的做法是:
只清理Assets/TextMesh Pro/Resources下你项目确实不用的默认资产;如果你用了 Addressables / AssetBundle,还要注意避免同一份字体同时存在于Resources和 AB 中,否则容易出现双份内存占用。
最稳的操作顺序
- 先确认项目里所有 TMP 文本组件实际使用的字体、材质、精灵资产。
- 把
TMP Settings里的默认引用改成你自己正式使用的资产。 - 再删除
Resources下未被引用的默认字体、Emoji、样式表、渐变预设、示例资源。 - 删除后做一次全平台 Build 测试,重点检查中文/英文/数字/标点是否缺字。
参考 - 无厘头 - 先预留新的地图篇章之入口,45°地图需要Lighting 2D
各种Unity Lighting 2D插件对比
PC平台随便用,主要是测评Webgl平台,手机平台取个平均即可
| 名字 | 连接 | 试用 |
| SmartLighting2D | [RELEASED] 2021.7.1 Smart Lighting 2D - Unity Forum | webgl测试后性能堪忧 |
2D LIGHTS IN UNITY | Unity - How to use 2D lights in Unity to set the mood | 官方的Urp |
| Soraphis2DLighting | soraphis/Unity-2D-Lighting: 2D Lighting Strategies for Unity (github.com) | 有点太艺术了,太糊了,光影效果不行(貌似是欧洲人做的) |
| Fast2DLight | (1) Need 2D Lights in your games? I just released a super-duper fast GPU-powered 2D lighting framework (Free, Open-Source) : Unity2D (reddit.com) | Unity2022版本及以上,依赖Shader,性能真心不错,但是效果略微简单 |
其实关键很简单,其实就是要给背景,创建一个材质(Sprites/Diffuse)
最原生,最原始的Built-in Light 2D
如图,Sprites/Diffuse Shader 的材质是灰色一片的。。。
参考,扩展阅读:
一个大牛,虽然用的是JAVA
Tech talk: Faking lights in 2D games – Orangepixel
Lighting Effect (gif,video)