Unity Text Mesh 穿透问题

news/2024/10/12 22:28:50

0. 问题

在 3D 场景中使用 TextMesh 的时候,字体无法被遮挡,永远在最上层。

1e64e4def979eec5b617f9aeeac30a8f.png

虽然目前在场景中可以直接使用 TextMeshPro,但是实际开发的时候总会有各种各样的情况,可能是兼容老项目,也可能是想保持项目足够简单,不想引入 TextMeshPro。这里就只记录如何解决这一问题的方案。

1. 原因

主要是因为 TextMesh 使用的 Shader 里边有这样一句。

ZTEST Always

也就是永远通过深度检测,所以会一直处于最上层。

2. 解决方案

找到 TextMesh 默认使用的 shader,删除这一句,做一个替换。

3. 实际处理

3.1 shader

由于使用的 Unity 的内置 shader,所以无法直接修改,需要去 Unity 提供的下载地址找。Download Archive (unity.com) 下载相应的版本

4c093fe492307657a1cec7abf5ce0cc0.png

找到其中的名为 Font.shader 的文件,shader 名为 "GUI/Text Shader"
创建一个新的 shader 并删除 ZTEST Always 即可。

b713f09bbc7db6d0f870fb68e6056ce9.png

3.2 material

创建一个新的材质球,并设置 shader 为上一步创建的。替换掉默认使用的字体材质球后,你会发现,字体并不能正确显示。这是因为字体贴图无法和自定义的这个材质球自动关联,需要手动进行设置。(另外一个方式就是创建一个可编辑的字体,Create Editable Copy)
00ccb040305b4f05c399ec3289000433.png

把字体文件的贴图拖到材质球的贴图框,就可以了。
44775d18d07d48cf257db395d3788722.png

868fd4e02f24d2e2f2c4301964aa7ca5.png

最终结果

d7c12c4616793215898c36b07efb9379.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/42299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Windows 允许空密码远程桌面

Windows 允许空密码远程桌面 开启远程修改策略 输入命令 secpol.msc 本地策略 -> 安全选项 -> 帐户:使用空密码的本地帐户只允许进行控制台登录本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/18241796

Redis之持久化

Redis持久化Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能!RDB(Redis DataBase)在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件…

MySql JOIN

MySql JOIN 背景 最近在做一些项目时需要对数据库进行简单的 select ,由于之前一直在做 HTML + JS + CSS 所有对数据库不是很了解,现在从 0 开始学习,每天学习一点,做个理解总结。有理解偏差欢迎留言指正。 简介 JOIN 用于根据两个或多个表之间关系,查询数据inner join 内…

presto 查询调度流程 (Coordinator Scheduler)

based on tag: 0.287 presto的 scheduler 是 SqlQueryScheduler 这个类控制的, 这个class主要是负责调度物理执行计划。调度具体的每个SqlStageExecution. 这个Stage可以当成Fragment的一个概念他会先把所有的stage创建一个schedule计划。一共有两种schedule计划,一个是all-at…

MyBatisX插件逆向工程和SQL生成使用

1.MyBatisX插件逆向工程将表映射成实体类 在IDEA中装好MyBatisX插件并连接数据库后,对咬映射成实体类的表点击鼠标右键,如下图所示:之后会弹出如下界面:然后根据如图信息进行配置,点击next。如果使用的是MyBatis-Plus3直接按照下图选项即可:至此结束逆向工程将表映射成实…

RSA算法中,为什么需要的是两个素数?

RSA算法是一种广泛使用的非对称加密技术,基于大数分解的困难性。本文将探讨为什么RSA算法需要两个素数,并以通俗易懂的例子解释其原理,同时提供专业分析和必要的数学背景。PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态…

2024-06-11 微信小程序上传代码提示超过xx兆?==》npm run build

平常上传小程序都是直接点上传,这个会直接把dev的包给上传,自然会比较大,可以通过命令npm run build来压缩包,从而减少包的体积 然后用微信开发者工具新建一个项目,选中build包,点击上传即可

Gitee仓库+宝塔WebHook实现线上与仓库代码同步更新

本文由 ChatMoney团队出品进行以下操作时,请确保已经在gitee添加了SSH公钥(Gitee个人设置->SSH公钥)宝塔上安装WebHook​编辑​找到WebHook,点击设置,点击添加,名称自行根据项目填写,脚本填写以下代码: #!/bin/bash echo "" # 输出当前时间 date --date=0…