首页 > 其他分享 >Unity Text Mesh 穿透问题

Unity Text Mesh 穿透问题

时间:2024-06-11 11:55:37浏览次数:23  
标签:贴图 TextMesh Text shader Unity Mesh 字体

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

标签:贴图,TextMesh,Text,shader,Unity,Mesh,字体
From: https://www.cnblogs.com/fcnaud/p/18241815

相关文章

  • Unity打包时隐藏/删除场景中部分内容
    背景使用Unity编辑器时,我们有时候会将服务端的一些信息通过Unity编辑,但由于这部分内容属于服务端,客户端仅限于编辑器中的编辑,我们并不希望将这部分内容打包出去。因此我们需要在打包时将其隐藏或者删除,但是又不影响编辑器的编辑。打包相关的回调接口IPreprocessBuildWithReport......
  • Ubuntu 24.04 LTS 安装配置 MySQL Community Server 8.4.0 LTS
    1安装 AptRepository​​​​​​​地址MySQL::DownloadMySQLAPTRepositorysudodpkg-imysql-apt-config_0.8.30-1_all.deb #安装mysql8.4ltssudoaptupdatesudoapt-getinstallmysql-server#修改mysqlroot密码策略 2查看版本test@test:~$my......
  • 中望ZW3D 二次开发 创建拉伸 cvxPartExtrude
    svxPointP1={0,0,0}; svxPointP2={10,0,0}; svxPointP3={10,10,0}; svxPointP4={0,10,0}; intL1; cvxPartLine2pt(&P1,&P2,&L1); intL2; cvxPartLine2pt(&P2,&P3,&L2); intL3; cvxPartLine2pt(&P3,&P......
  • ApplicationContextAware获取IOC容器
    目录常见Aware实现ApplicationContextAware作用1、ApplicationContext是什么?2、ApplicationContextAware作用ApplicationContextAware使用常见Aware实现接口作用ApplicationContextAware获取当前应用的上下文对象EnvironmentAware获取环境变量,包括我们配置的以及......
  • Kali Linux 2024.2 发布 (t64, GNOME 46 & Community Packages) - 领先的渗透测试发行
    KaliLinux2024.2发布(t64,GNOME46&CommunityPackages)-领先的渗透测试发行版ThemostadvancedPenetrationTestingDistribution请访问原文链接:https://sysin.org/blog/kali-linux/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgKaliLinux2024.2已......
  • Unity Tips
    1:DebugMode:对于只在一个类中访问的变量设置为private,但是在调试的时候会看不到这些值,可以插入一些调试日志语句,将变量改为公共变量,同时将inspector设置为Debug模式,此时私有变量就将变得可见。2:range属性在变量使用之前使用range属性来给它一个最小值和最大值,这将在inspecto......
  • 音视频转为文字SuperVoiceToText
    音视频转为文字SuperVoiceToText,它能够把视频或语音文件高效地转换为文字,它是基于最为先进的AI大模型,通过在海量语音资料上进行训练学习而造就,具备极为卓越的识别准确率。不仅如此,它支持包括汉语、英语、日语、韩语、法语、俄语等在内的多种语言,同时还具有翻译功能。其可在本地......
  • pageContext.request.contextpath、getServletContext.getRealPath(““)、request.ge
    在JavaEE(JavaEnterpriseEdition)中开发Web应用时,开发者常常需要获取Web应用的上下文路径和服务器上文件的真实路径。以下是对pageContext.request.contextPath、getServletContext().getRealPath("")和request.getContextPath()的详细解释及它们之间的区别:1.pageContext......
  • WPF DataContext order and filter via CollectionViewSource.GetDefaultView(DataCon
    //xaml<Windowx:Class="WpfApp146.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • 1_关于BeanFactory与ApplicationContext的联系和区别
    BeanFactory与ApplicationContext1.容器和接口1.1BeanFactory与ApplicationContext的联系与区别:ConfigurableApplicationContext是ApplicationContext的子接口,而ApplicationContext接口又是BeanFactory的子接口。因此ConfigurableApplicationContext接口简介继承了Bean......