ソースコード
using System; using System.Linq; using UnityEngine; public static class SpriteUtils { public static Mesh SpriteToMesh( Sprite sprite ) { var mesh = new Mesh(); mesh.SetVertices( Array.ConvertAll( sprite.vertices, x => ( Vector3 ) x ).ToList() ); mesh.SetUVs( 0, sprite.uv.ToList() ); mesh.SetTriangles( Array.ConvertAll( sprite.triangles, x => ( int ) x ), 0 ); return mesh; } }
使用例
using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hpge" )] private static void Hoge() { var sprite = AssetDatabase.LoadAssetAtPath<Sprite>( "..." ); var mesh = SpriteUtils.SpriteToMesh( sprite ); AssetDatabase.CreateAsset( mesh, "Assets/result.mesh" ); } }
例えば上記のようなスプライトからメッシュを生成すると
このようなメッシュが生成されます
例えば生成したメッシュを Particle System で使用することで
Overdraw を抑えることができます