Material doesn‘t have a float or range property ‘_CullMode unity 报错

出现情景:

TextMeshPro中使用了中文或者自己的字体后才出现的这个红色错误。

解决方法:

既然说材质没有float型或者范围,属性名称是_CullMode,那么就单击错误找到这个材质,进入shader里面编辑它,如图:

 添加了一句shader:

_CullMode	        ("MyCullMode", float) = 0

添加了就不会报错了。o是我自己设定的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity 中,射线绘制的线条可能会出现锯齿或不平滑的情况。这是因为 Unity 默认情况下使用的是简单的线性插值来渲染线条,而不是使用更高质量的抗锯齿算法。 为了解决这个问题,你可以通过以下两种方式来使射线绘制的线条更平滑: 1. 使用 `GL` 类 在 Unity 中,你可以使用 `GL` 类来进行自定义的渲染。这种方式可以让你更精细地控制线条的绘制和抗锯齿效果。 以下是一个使用 `GL` 类绘制平滑线条的示例代码: ```csharp using UnityEngine; public class RaycastExample : MonoBehaviour { public float distance = 10.0f; public Color color = Color.white; public float lineWidth = 0.1f; void OnPostRender() { Material material = new Material(Shader.Find("Hidden/Internal-Colored")); material.hideFlags = HideFlags.HideAndDontSave; material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); material.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off); material.SetInt("_ZWrite", 0); material.SetInt("_ZTest", (int)UnityEngine.Rendering.CompareFunction.Always); GL.PushMatrix(); material.SetPass(0); GL.LoadOrtho(); // 从摄像机正前方发出一条射线 Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward); // 检测射线是否碰撞到物体 RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, distance)) { // 获取碰撞点的坐标 Vector3 hitPoint = hitInfo.point; // 绘制一条线条,从摄像机正前方到碰撞点 GL.Begin(GL.LINES); GL.Color(color); GL.Vertex3(Camera.main.transform.position.x, Camera.main.transform.position.y, 0); GL.Vertex3(hitPoint.x, hitPoint.y, 0); GL.End(); } else { // 如果没有碰撞到物体,绘制一条线条,从摄像机正前方到射线的最远距离 GL.Begin(GL.LINES); GL.Color(color); GL.Vertex3(Camera.main.transform.position.x, Camera.main.transform.position.y, 0); GL.Vertex3(Camera.main.transform.position.x + ray.direction.x * distance, Camera.main.transform.position.y + ray.direction.y * distance, 0); GL.End(); } GL.PopMatrix(); } } ``` 在以上示例代码中,我们使用了 `GL` 类来绘制线条。我们首先创建了一个隐藏的材质,然后使用 `GL.Begin` 和 `GL.End` 方法来指定线条的顶点,并使用 `GL.Color` 方法来指定线条的颜色。最后,我们使用 `GL.LoadOrtho` 方法来设置正交投影矩阵,以确保线条的大小和位置与屏幕上的像素一致。 2. 使用抗锯齿算法 另一种解决射线绘制线条不平滑的方法是使用 Unity 内置的抗锯齿算法。你可以在相机组件的设置中启用抗锯齿选项。 在 Unity 中,启用抗锯齿选项可以使得线条更平滑,但是也会增加性能开销。因此,在使用抗锯齿算法时,需要根据具体情况进行权衡。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值