VectorGraphics Unity3d - 在代码中引用导入的SVG

问题描述 投票:0回答:1

我使用Unity的Vector Graphics package导入一个有3个形状的简单svg。

导入成功:

enter image description here

但是,一旦导入 - 我如何获得对svg的引用 - 以便我可以修改形状和填充?

文档显示了如何渲染(在进行更改后),但我不明白如何首先获取对导入的svg的引用?

即使看到一些已经实现的示例代码就足够了,但我找不到任何在线代码。

unity3d vector-graphics
1个回答
0
投票

执行此操作的方法是解析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;

See source answer

© www.soinside.com 2019 - 2024. All rights reserved.