Skip to content

Tutorial_9(zh CN)

MikiraSora edited this page Jan 4, 2024 · 1 revision

简介&原理

此SVG物件主要分成两种,一个是基于.svg文件的物件(SvgImageFilePrefab);另一个则是基于文本内容生成SVG对象的物件(SvgStringPrefab)。

  1. 拿到SVG内容
  2. 解析SVG内容,拿到SVG线段+颜色
  3. 通过物件参数,过滤掉不合适的颜色+对应的线段
  4. 对于每一组线段以及对应的线段:
  • 4.1 通过物件参数,将此颜色映射成对应的轨道类型
  • 4.2 通过物件参数,使用不同的CurveInterpolaterFactory生成线段插值器,塞线段数据进插值器,从后者得到一系列直线
  • 4.3 将上面一系列直线,生成对应轨道类型的轨道集合
  1. 输出添加到谱面中显示

使用方法

SvgImageFilePrefab:
1
SvgStringPrefab:
1

部分参数解释

SvgPrefab通用参数:

  • ColorSimilar : 将SVG物件原来的颜色映射到轨道能显示的颜色,那么此参数则表示颜色映射的容错程度。参数值越低,能转换成轨道的内容越少但越精确。
  • CurveInterpolaterFactory : 生成轨道并输出到编辑器时,需要将SVG物件一系列(曲)线段转换成一条条直线轨道物件。那么此参数选项将会控制编辑器如何生成轨道物件,比如默认实现,就是将SVG物件直接插值,然后直接转换成对应的物件输出;如果你想实现自己自定义的操作(比如将那些点都限制成横坐标都是整数值的),可以自己实现一个包含ICurveInterpolaterFactory接口的插件
  • EnableColorfulLaneSimilar : 颜色轨道映射时, 是否支持ColorfulLane轨道。 如果不勾选,则只考虑红绿蓝三色轨道。
  • Opacity : 透明度,仅用于辅助SVG物件显示,并不会影响轨道输出功能。
  • ShowOriginColor : 是否显示SVG物件颜色,而不是经过颜色映射后的颜色。
  • Tolerance : 可以简单理解为SVG线段简化程度,值越低就越接近SVG物件原本样子,生成的轨道物件越多 , 生成轨道输出所花费的时间就越久。

SvgStringPrefab参数:

  • TypefaceName : 字体名字,比如"Consolas"
  • FontSize : 字体大小 , 和 Scale 没啥实质性区别,生成SVG物件时会用到FontSize, 而生成SVG后则拿Scale进行直接缩放

SvgImageFilePrefab参数:

  • SvgFile : 需要提供正规的.svg文件
Clone this wiki locally