Unity - 来自精灵顶点的网格

agi*_*iro 2 c# mesh sprite unity-game-engine

我试图创建一个meshspritevertices,像这样:

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;
}
Run Code Online (Sandbox Code Playgroud)

问题是,没有错误,我得到了一个简单的立方体,一个 3D 立方体。

sprite的不是二次方的,所以它确实有一些减少过度绘制的分辨率。

问题是,如何mesh从 a 中得到它sprite

我这样做的原因是我需要精灵边缘周围的粒子效果才能使用网格作为发射器。

agi*_*iro 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;
}
Run Code Online (Sandbox Code Playgroud)

多维数据集的原因很简单:沿着我的脚本,我检查GameObject脚本上是否有一个MeshFilter带有网格的网格。如果是这样,请使用它。我使用 Unity 的 Standard Assets 的粒子系统作为基础来创建我自己的粒子系统,他们在其上的MeshFilter组件中留下了一个立方体。

小伙子们,请始终注意立方体组件。