我使用Unity的Vector Graphics package导入一个有3个形状的简单svg。
导入成功:
但是,一旦导入 - 我如何获得对svg的引用 - 以便我可以修改形状和填充?
文档显示了如何渲染(在进行更改后),但我不明白如何首先获取对导入的svg的引用?
即使看到一些已经实现的示例代码就足够了,但我找不到任何在线代码。
执行此操作的方法是解析SVG文件以获取文件的矢量表示(矢量场景),然后您可以在细分前更改任何属性。例如:
string svg =
@"<svg xmlns=""http://www.w3.org/2000/svg"" xmlns:xlink=""http://www.w3.org/1999/xlink"" viewBox=""0 0 216 216"">
<g>
<polygon id=""Poly1"" points=""...""/>
</g>
</svg>";
// Import the SVG at runtime
var sceneInfo = SVGParser.ImportSVG(new StringReader(svg));
var shape = sceneInfo.NodeIDs["Poly1"].Shapes[0];
shape.Fill = new SolidFill() { Color = Color.red };
// Tessellate
var geoms = VectorUtils.TessellateScene(sceneInfo.Scene, tessOptions);
// Build a sprite
var sprite = VectorUtils.BuildSprite(geoms, 10.0f, VectorUtils.Alignment.Center, Vector2.zero, 128, true);
GetComponent<SpriteRenderer>().sprite = sprite;