unity中Sprite render与纹理的mesh type

在写shader的时候遇到的问题,最终返回的值总是按图片alpha非0的部分显示。
如下,片段着色器直接返回fixed4(1,1,1,1)时的图片显示:
原图在这里插入图片描述
发现原因是图片的设置里面,mesh type是Tight。官方文档说明:
在这里插入图片描述
设置fullrect时,会使用和图片纹理大小一样的矩形。
设置为Tight时,会基于alpha尽可能多的裁剪像素。
看下不同形状的裁剪情况:

原图采样图
在这里插入图片描述在这里插入图片描述
12
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

纹理设置中的MeshType只对SpriteRenderer有效。所以在UI中使用shader没有出现这个问题(按照ImageType来画Mesh)。使用Tight的话,就意味着(可能)需要额外的内存,更多的顶点数,但overdraw少了。差别不是很大,实际使用按需求来就好。

overdraw顶点数
Tight在这里插入图片描述在这里插入图片描述
Fullrect在这里插入图片描述在这里插入图片描述
### 如何在 Unity 中创建和使用 3D 字体材质球 #### 创建 3D 文字对象 为了在 Unity 中创建 3D 字体并应用材质球,首先需要通过 `TextMesh` 或更先进的 `TextMeshPro-Mesh` 组件来生成三维的文字对象。对于高质量的需求,推荐采用 `TextMeshPro-Mesh`[^2]。 ```csharp // 使用 TextMeshPro 来实例化 3D 文本 using TMPro; public class Create3DText : MonoBehaviour { void Start() { GameObject textObject = new GameObject("3D_Text"); var textMesh = textObject.AddComponent<TextMeshPro>(); // 设置文本属性 textMesh.text = "Hello"; textMesh.fontSize = 0.5f; textMesh.alignment = TextAlignmentOptions.Center; textMesh.color = Color.white; // 转换为网格以便于后续操作 MeshRenderer renderer = textObject.AddComponent<MeshRenderer>(); MeshFilter filter = textObject.AddComponent<MeshFilter>(); TMP_SpriteAsset spriteAsset = Resources.Load<TMP_SpriteAsset>("Sprite Asset Path"); textMesh.spriteAsset = spriteAsset; textMesh.ForceMeshUpdate(); filter.mesh = textMesh.mesh; } } ``` #### 制作自定义材质球 接着,准备一个适合该文字使用的材质球。这通常涉及到设置合适的着色器(shader),以及调整诸如颜色、透明度等参数。可以通过 Shader Graph 工具轻松定制所需视觉效果。 1. **新建材质**:右键点击项目窗口中的 Assets 文件夹 -> Create -> Material。 2. **配置材质**:选择新建立的材质文件,在 Inspector 面板里指定相应的着色器(Shader),比如 `"Universal Render Pipeline/Lit"` 或者专门为文字设计的着色器。 3. **导入纹理资源**:如果希望给文字加上特定图案或背景,可以在材质上附加图片作为主贴图(Main Texture)。 #### 应用材质到 3D 文字 最后一步就是把之前做好的材质赋予我们的 3D 文字对象: ```csharp renderer.material = myCustomMaterial; ``` 以上就是在 Unity 中创建带有特殊材质的 3D 文字的方法概述。值得注意的是,当涉及复杂的渲染需求时,可能还需要进一步探索不同的着色技术和性能优化策略[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值