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

VectorGraphics Unity3d - get reference to imported SVG in code

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

导入成功:

但是,一旦导入 - 我如何获得对 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;

See source answer