Unity - 从精灵顶点创建网格

3

我正在尝试从 spritevertices 创建一个 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立方体。

我的精灵不是正方形的,因此它确实有一些分辨率可以降低过度绘制。

问题是,如何从精灵中获取那个网格?

我之所以这样做是因为我需要在精灵的边缘使用粒子效果来使用网格作为发射器。

1个回答

5

找到了方法,也知道为什么会得到神秘的立方体。

做这个的方法如下:

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的标准资源粒子系统作为基础来创建自己的粒子系统,它们在一个MeshFilter组件中留下了一个方块。

大家一定要注意方块组件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接