Unity3d。如何找到检测不正确的凸网格

时间:2016-05-26 15:00:18

标签: unity3d

我为MeshCollider编写了网格生成器。但有时候,当我将凸属性设置为ture时,会出现一些错误。

例如,现在我有一个44个顶点的网格,这个错误:

  
    

CreateTrianglesFromPolygons:凸包有一个少于3个顶点的多边形!

  

  
    

凸壳初始化失败!尝试使用PxConvexFlag :: eINFLATE_CONVEX标志。

  

或其他......

我想要的只是,就是检测并处理这个错误。但是try catch不起作用:

try
{
    collider.convex = true;
    UnityEngine.Debug.Log("Success! TrCount: " + collider.sharedMesh.triangles.Length.ToString()); // "Success! TrCount: 84"
}
catch
{
    UnityEngine.Debug.Log("Error occur"); // never appear
}

在将凸面设置为true之前,可能有一些规则要检测它。

感谢您的帮助。)

1 个答案:

答案 0 :(得分:1)

您忘记了catch(ExceptionType)

try
{
    collider.convex = true;
    UnityEngine.Debug.Log("Success!");
}
catch(Exception e)
{
    UnityEngine.Debug.Log("Error occur: " + e.Message);
}

在顶部添加using System;

编辑:

错误消息是 NOT 异常,因此下面的方法可以解决您的问题。请记住,凸起要求三角形<&lt; 255上班。以下代码可确保您的触发在 3 254 之间。

if (generatedMesh.triangles.Length >= 3 && generatedMesh.triangles.Length < 255)
{
    collider.convex = true;
    UnityEngine.Debug.Log("Success!");
}else
{
    UnityEngine.Debug.Log("Error occur: " + e.Message);
}