You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity报错:无法初始化宽高为零的非默认纹理求解决方案

解决Unity中TMP纹理初始化报错的替代方案

针对你遇到的Unity Error, Cannot initialize non-default texture with negative or zero width报错(指向TMP_FontAsset.cs第2846行的texture.Resize(0, 0, TextureFormat.Alpha8, false)),以下是无需修改源码或强制更新TMP的可行方案:

1. 检查并修复TMP字体资产配置

  • 找到项目中所有.fontasset文件,逐个打开检查Atlas Settings面板:
    • 确保Atlas Width和Atlas Height均为大于0的正整数(推荐使用2的幂次,如512、1024),如果存在设为0的情况,修改后点击Apply保存。
  • 清理TMP字体缓存:顶部菜单选择Window > TextMeshPro > Clear Font Asset Cache,之后重启Unity。

2. 重新生成问题字体资产

如果是特定字体触发报错,重新生成字体资产可解决初始化问题:

  • 选中项目中的TTF/OTF字体文件,右键选择Create > TextMeshPro > Font Asset。
  • 在弹出的生成窗口中,确认Atlas Settings的尺寸为正整数,点击Generate Font Asset。
  • 替换场景、预制体中所有引用原字体资产的TMP组件,使用新生成的版本。

3. 回退到内置稳定版TMP

若更新预览版失败,可回退到Unity内置的稳定版本:

  • 打开Package Manager,点击左上角+按钮,选择Add package from disk...。
  • 导航到Unity安装目录下的TMP内置包路径(通常为Editor\Data\PackageManager\BuiltInPackages\com.unity.textmeshpro),选中package.json文件导入,覆盖当前版本。

4. 排查项目图形设置兼容性

  • 进入Edit > Project Settings > Player > Other Settings > Graphics APIs,移除当前平台不支持的图形API,保留稳定版本(如Windows平台保留Direct3D11)。
  • 检查项目中所有纹理的导入设置,确保没有将Width/Height设为0的情况,尤其是TMP生成的 atlas 纹理。

内容的提问来源于stack exchange,提问作者safae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:57:11