向GameObject添加TextMeshPro组件后物体及Mesh Filter消失问题
TextMeshPro添加后GameObject消失的问题分析与修复
核心原因
TextMeshPro组件会自动生成并管理自身的Mesh Filter和Mesh Renderer,替换原有组件是正常行为,但GameObject消失通常由以下代码或配置问题导致:
TextMeshPro类型误用
你在代码中操作了rectTransform,但TextMeshPro是3D文本组件,不需要RectTransform;如果是UI场景,应该使用TextMeshProUGUI。强行给3D物体加TextMeshPro并修改RectTransform会破坏布局逻辑,导致物体不可见。错误的旋转逻辑
Update中的旋转代码会让文本瞬间同步相机的欧拉角,极易导致文本法线完全背离相机,触发背面剔除(默认开启),最终看不到物体:m_text.transform.Rotate(Camera.main.transform.eulerAngles - m_text.transform.eulerAngles);资源加载失败
如果Resources.Load的字体或材质路径错误,TextMeshPro因缺少渲染资源无法显示,视觉上等同于GameObject消失。
修复方案
修正组件类型
- 若做UI文本:删除现有TextMeshPro,添加
TextMeshProUGUI组件,确保GameObject在Canvas下。 - 若做3D文本:删除代码中操作RectTransform的行:
// 移除该行 m_text.rectTransform.sizeDelta = new Vector2(3f, 3f);
- 若做UI文本:删除现有TextMeshPro,添加
优化旋转逻辑
要让文本始终面向相机,用LookAt替代当前的Rotate逻辑更稳定:void Update() { m_text.transform.LookAt(Camera.main.transform); // 避免文本翻转,添加180度Y轴旋转 m_text.transform.Rotate(0, 180, 0); }验证资源路径
确认Resources/Fonts & Materials目录下存在LiberationSans SDF(TMP字体资产)和LiberationSans SDF - Drop Shadow(材质),路径大小写、文件夹名称必须完全匹配。检查渲染设置
确保TextMeshPro的Mesh Renderer所在Layer被相机的Culling Mask包含,避免被相机忽略。
内容的提问来源于stack exchange,提问作者user582859
相关产品推荐
相关产品推荐

