(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]

uGUIのTextをTextMesh Proへ置換する方法と旧TextMesh Proからの移行方法【Unity】【TextMesh Pro】【uGUI】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2018.4.1f1


はじめに

uGUIのTextで欲しかった機能が揃っており、かなり魅力的なTextMesh Proですが、



既にuGUIのTextで実装してしまったものを変更するのは中々大変です。


ということで今回は、uGUIのTextをTextMesh Proへ置換する方法の紹介です!

ついでに旧バージョン(公式機能になる前)のTextMesh Proから移行する方法についてもまとめています。


uGUIのTextをTextMesh Proへ置換する方法

uGUIのTextをTextMesh Proへ置換したい場合、TextMeshProReplacerというもを使うと便利です。

f:id:kan_kikuchi:20190627075452p:plain


公開されているものを取得すると、unitypackageが含まれているので、これをインポートします。

f:id:kan_kikuchi:20190627075532j:plain
f:id:kan_kikuchi:20190627075539j:plain


すると、上部メニューにText Mesh Replacerというのが追加されるので、

このReplace Current Sceneを選択すると、現在のシーンの

Replace All Aceneを選択すると、全シーンのuGUIのTextをTextMesh Proへ置換してくれます。

f:id:kan_kikuchi:20190627075621j:plain


もしくはTextが付いているオブジェクトを選択すると

Inspector上にReplace with TextMeshProというボタンが表示されるので、

ここから一つだけ置換する事も可能です。

f:id:kan_kikuchi:20190627075715p:plain


ただし、置換する前にTextMesh Proで使えるFontやシェーダーなどのインポートが必要ですし、

(インポートしないと置換を実行しても何も反応がないっぽい?)

f:id:kan_kikuchi:20190318131907j:plain
f:id:kan_kikuchi:20190627085008p:plain


Textで使っているフォントから作ったフォントアセットを予め用意する必要もあります。

f:id:kan_kikuchi:20190628072231p:plain


もし、フォントアセットがない場合は以下のような警告が出て、置換出来ません。

Text Mesh pro Font Arial is missing

f:id:kan_kikuchi:20190627075757j:plain


実際に変換してみると以下のような感じになります。

f:id:kan_kikuchi:20190627080952g:plain


アウトラインやシャドウのような別のコンポーネントを使って表現してるものは再現出来ませんが、

サイズや色、左寄せや傾きなどはそのまま再現してくれます。


旧TextMesh Proからの移行方法

ここでいう旧TextMesh ProとはアセットストアにあるTextMesh Proを使った場合の事で、



ようはUnity2017などからTextMesh Pro使っていて、

f:id:kan_kikuchi:20190627084425j:plain


その後Unityを2018にアップデートしたら

TextMesh Proが重複して大量の警告やエラーが出た!みたいな場合の話です。

Library/PackageCache/com.unity.textmeshpro@1.3.0/Scripts/Runtime/TMPro_Private.cs(3552,92): error CS0121: The call is ambiguous between the following methods or properties: `TMPro.TMPro_ExtensionMethods.Compare(this UnityEngine.Color32, UnityEngine.Color32)' and `TMPro.TMPro_ExtensionMethods.Compare(this UnityEngine.Color32, UnityEngine.Color32)'

f:id:kan_kikuchi:20190627082213p:plain


なお、今回はUnity2017.4.16f1からUnity2018.4.1f1への移行で試しました。

また、移行はミスると元のテキストの設定が消えたりするので、

バックアップをとるなど、復元出来るようにしておく事をオススメします。


肝心の移行の方法ですが、

Window->TextMeshPro->Project Files GUID Remapping Toolsを使います。

f:id:kan_kikuchi:20190627084447j:plain


ただ、Unityをアップデートしてすぐにエラーが出た場合、表示されていない事もあるので、

そういう場合は、一旦元のTextMesh Proのフォルダをデスクトップなど別の場所に移動します。

するとエラーが消え(UIの表示も消える)、上記メニューが表示されるようになるので、

再度、TextMesh Proのフォルダをプロジェクトに戻します(エラーも戻る、UI表示は消えたまま)。

なお、TextMesh Proのフォルダを戻さず進めると、テキストの設定が消えました。

f:id:kan_kikuchi:20190627082341j:plain


Project Files GUID Remapping Toolsを実行するとウィンドウが表示されるので、

Scan Project Filesのボタンを押します。

f:id:kan_kikuchi:20190627084706p:plain


この時、設定を変更してくれ的なメッセージが出たら、

f:id:kan_kikuchi:20190627084801j:plain


Project SettingsのEditorのVersion ControlのModeをVisible Meta Files

Asset SerializationのModeをForce Textに変更し、再度ボタンを押します。

f:id:kan_kikuchi:20190627084808j:plain
f:id:kan_kikuchi:20190627084816p:plain


Scanが終了後、

Save Modified Project Filesのボタンを押します。

f:id:kan_kikuchi:20190627084908p:plain


そして古いTextMesh Proのフォルダを削除し、

f:id:kan_kikuchi:20190627082341j:plain


新TextMesh Proの基本アセットをインポートすれば、移行完了です。

f:id:kan_kikuchi:20190318131907j:plain
f:id:kan_kikuchi:20190627085008p:plain


これでテキストが表示されない場合は

シーンをリロードすれば、おそらく前と同じ状態で表示されるようになります。

f:id:kan_kikuchi:20190627085034j:plain