c# - Unity - 来自 Sprite 顶点的网格

标签 c# unity3d sprite mesh

我正在尝试从 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 立方体。

我的 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/

相关文章:

c# - 对于这种使用 BitmapSource 不断更新相机图像的情况,如何避免显式调用 GC.Collect()

c# - 最小起订量 - 最小起订量只有效一次

c# - 检测光标的更好方法?

unity3d - Circle Collider 2D 或 Box Collider 2D

css - 使用 aspnet 图像框架的 css 中的 Sprite

swift - 多个 Sprite 节点,仅出现一个

c# - MySQL 连接返回多行

C# MemoryStream 大于 FileStream

c# - 尝试使用 PunRPC(Unity 和 Photon)发送 RPC 但出现错误 "Object reference not set to an instance of an object"

ios - Cocos2d : how can I find the center point of a CCSprite?