Как прочитать свойства стиля файла SVG в Unity с C # - PullRequest
0 голосов
/ 11 марта 2019

Мне нужно записать цвет заливки объекта в SVG-файле в переменную. Я использую код ниже, чтобы получить Node Id's:

file_path = System.IO.Path.Combine(Application.dataPath + "/StreamingAssets", this.gameObject.name + ".svg");

if (File.Exists(file_path))
{
    file = File.ReadAllText(file_path);
}

scene = SVGParser.ImportSVG(new StringReader(file));

foreach (KeyValuePair<string, SceneNode> param in scene.NodeIDs)
{
     names.Add(param.Key);  
}

И проблема в том, что я знаю, как изменить цвет заливки, но не знаю, как прочитать существующий цвет заливки из файла. Я пытался использовать scene.NodeIDs[id].Shapes[0].Fill.Color, но что-то подобное не существует. Вот пример моего пути к файлу SVG:

<path
   id="path5635"
   d="m 256,342.5 c -2.988,-4.353 -4.224,-16.005 -4.224,-16.005 0,0 -12.516,12.865 -22.585,26.184 -10.07,13.318 -18.961,23.69 -32.018,32.656 -13.06,8.966 -55.413,44.449 -58.141,59.132 0,0 -2.532,8.533 6.468,11.533 9,3 22,-3 31.5,-9.5 9.5,-6.5 31.5,-22 38.374,-33.1 5.995,-9.682 20.626,-38.9 27.126,-49.4 5.843,-9.439 13.5,-21.5 13.5,-21.5 z"
   inkscape:connector-curvature="0"
   style="fill:#aa0e0e" />

Есть предложения как это сделать?

1 Ответ

0 голосов
/ 12 марта 2019

вы можете типизировать Fill к SolidFill и оценить его Color свойство следующим образом

var currentColor = ((SolidFill)scene.NodeIDs[id].Shapes[0].Fill).Color;

Пример:

public class SvgExample : MonoBehaviour
{
    public Color color;

    private void Start()
    {
        var file = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\">" +
                        "<path id =\"path5635\" " +
                            "d =\"m 256,342.5 c -2.988,-4.353 -4.224,-16.005 -4.224,-16.005 0,0 -12.516,12.865 -22.585,26.184 " +
                            "-10.07,13.318 -18.961,23.69 -32.018,32.656 -13.06,8.966 -55.413,44.449 -58.141,59.132 0,0 -2.532,8.533 " +
                            "6.468,11.533 9,3 22,-3 31.5,-9.5 9.5,-6.5 31.5,-22 38.374,-33.1 5.995,-9.682 20.626,-38.9 27.126,-49.4 " +
                            "5.843,-9.439 13.5,-21.5 13.5,-21.5 z\" " +
                            "style=\"fill:#aa0e0e\" />" +
                   "</svg>";

        var scene = SVGParser.ImportSVG(new StringReader(file));

        color = ((SolidFill)scene.NodeIDs["path5635"].Shapes[0].Fill).Color;
    }
}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...