我正在尝试从 sprite
的 vertices
创建一个 mesh
,如下所示:
private Mesh SpriteToMesh(Sprite sprite)
{
Mesh mesh = new Mesh
{
vertices = Array.ConvertAll(sprite.vertices, i => (Vector3)i),
uv = sprite.uv,
triangles = Array.ConvertAll(sprite.triangles, i => (int)i)
};
return mesh;
}
问题是,没有错误,我得到了一个简单的立方体,一个 3D 立方体。
我的 sprite
不是二次方的,所以它确实有一些分辨率来减少 overdraw 。
问题是,如何从 sprite
中获取 mesh
?
我这样做的原因是我需要 Sprite 边缘周围的粒子效果才能将网格用作发射器。
最佳答案
Sod it,找到了方法以及为什么我得到了一个神秘的立方体。
方法是这样的:
private Mesh SpriteToMesh(Sprite sprite)
{
Mesh mesh = new Mesh();
mesh.SetVertices(Array.ConvertAll(sprite.vertices, i => (Vector3)i).ToList());
mesh.SetUVs(0,sprite.uv.ToList());
mesh.SetTriangles(Array.ConvertAll(sprite.triangles, i => (int)i),0);
return mesh;
}
立方体的原因非常简单:在我的脚本中,我检查脚本所在的 GameObject
是否有一个带有网格的 MeshFilter
。如果是这样,请使用它。我使用 Unity 的 Standard Assets 粒子系统作为基础来创建我自己的粒子系统,他们在其上的 MeshFilter
组件中留下了一个立方体。
小伙子们,请始终注意立方体组件。
关于c# - Unity - 来自 Sprite 顶点的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45983064/