渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

SVGImporterをUnity2017で正常に動かす方法


f:id:esakun:20170816093729p:plain

おそらくUnity5系までは正常に動作していたSVGImporter

SVGImporterとは、SVG1.1形式保存したSVGファイルをベクターデータとしてUnityに取り込み、メッシュ化し、ベクターデータのように扱うことが出来るアセットです。

参考動画

Unity2017にアップデートして使ってみた所、今までの使い方では動かなかったので、対処法をメモしておきます。
※2017.8.16時点の情報です。今後アップデートで対応は入る可能性があります

今までSVGファイルをProjectに放り込み、それをヒエラルキーにドラッグするとそのまま、SVGの絵を表示してくれていました。しかし、Unity2017のPlayableAPI実装に伴いセットアップ部分の機能が競合してしまっているようです。

f:id:esakun:20170816094936p:plain
本来であればSVGファイルをヒエラルキーにドラッグすると、上図のようにSVGRendererMeshFileterMeshRendererMaterialがセットされた状態になります。

f:id:esakun:20170816095127p:plain
しかしUnity2017.1では、このようにPlayableDirectorがくっついた状態で何も表示はされません。

対処法

SVGファイルをヒエラルキーにドラッグすることを諦めます。

  1. GameObjectを作成
  2. SVGRendererをAddComponent(MeshFilter、MeshRendererが自動でアタッチされる)
  3. SVGRendererのVectorGraphicsにSVGファイルをドラッグ
  4. SVGRendererのAdvancedMaterialsのTransparentに適当なMaterialをセットし、外す
  5. するとMeshRendererのMaterialにSVG Importer/SolidColor/SolidColorAlphaBlendedがセットされる
  6. 無事表示

というフローを踏めば表示されます。

f:id:esakun:20170816101236g:plain

頑張ってEditor拡張すればもう少し簡単になりそうですが、公式の対応をまとうと思っている次第です。

環境

  • Unity2017.1.0f3
  • SVG Importer1.1.6