☰
【大神系列】TextMeshPro打包问题,和Lighing2D 光插件
2026/10/21 2:51:04 网站建设 项目流程

低质的文章又来了

之前好像写过一个相关文章,某些原因发不出

总之我如果不亲身处理这个目录,十个项目,十个都不会处理,真心不知道这些项目是怎么维护的

多少年了,官方处理了没有?

(总之,世界上就是一个巨大的草台班子)

我写的

<找不到了>

大神写的 -无幻

Unity TextMesh Pro 组件的 Resources 文件夹打包_textmeshpro assetbundle-CSDN博客

大神介绍了这种做法:

损失点性能使用反射来对其进行赋值,因为只需赋值一次,所以性能可以忽略。将 Resources 文件夹改名成其他名称,然后把TMP_Settings.asset文件移到 AssetBundle 预制读取目录。最后在游戏资源检测完毕后,调用如下代码:(见上面链接)

但是

但是(*&(*&**……&*

  1. 不建议像大神改内核,对于新手更容易导致项目的其他问题
  2. 删除一些Resources的内部文件,最小化,或者是比较简单的方案
  3. 大神建议了牺牲性能,换来最终的AB打包结果,但如果你的项目不需要AB打包呢;又如果是牺牲一些Assetbundle的冗余,换来小项目的稳定也未尝不是一个合理的牺牲
  4. 有没有人提供一些最小化TextMeshPro,优化过的TextMeshPro; 我也经常这么个干;但是缺点是最新版本无法同步,或者当前代码就有一些隐含BUG,对项目的稳定更不利

总之就是怎么选都是难,也不能怪其他团队草台,因为真的团队内没人敢改,无人敢负责

TMP Res目录的处理

对于我来说,就是加了一个Text,是为了测试材质和着色器(上个文章有说)是否能支持旧的 Legacy的普通Text 和这个新的TextMeshPro (实测,是有2个uv的()

但是我也已经在旧的普通的 Text 实现了两个UV,

所以以下基本对于我来说,都可删,因为不需要

建议保留

文件/目录作用是否可删
TMP Settings.assetTMP 全局配置,默认通过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、样式表、渐变预设,通常只是“默认示例”。

可以这样判断:

  1. 在 Project 窗口搜索t:TMP_FontAsset,看哪些字体被预制体、场景或TMP Settings引用。
  2. 搜索t:TMP_SpriteAsset,确认EmojiOne是否被引用。
  3. 搜索t:TMP_StyleSheet,确认默认样式表是否被引用。
  4. 搜索t:TMP_ColorGradient,确认渐变预设是否被引用。
  5. 打开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 中,否则容易出现双份内存占用。

最稳的操作顺序

  1. 先确认项目里所有 TMP 文本组件实际使用的字体、材质、精灵资产。
  2. 把TMP Settings里的默认引用改成你自己正式使用的资产。
  3. 再删除Resources下未被引用的默认字体、Emoji、样式表、渐变预设、示例资源。
  4. 删除后做一次全平台 Build 测试,重点检查中文/英文/数字/标点是否缺字。

参考 - 无厘头 - 先预留新的地图篇章之入口,45°地图需要Lighting 2D

各种Unity Lighting 2D插件对比

PC平台随便用,主要是测评Webgl平台,手机平台取个平均即可

名字连接试用
SmartLighting2D[RELEASED] 2021.7.1 Smart Lighting 2D - Unity Forumwebgl测试后性能堪忧

2D LIGHTS IN UNITY

Unity - How to use 2D lights in Unity to set the mood官方的Urp
Soraphis2DLightingsoraphis/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)

Pinterest

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询