この記事でのバージョン
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というもを使うと便利です。
公開されているものを取得すると、unitypackageが含まれているので、これをインポートします。
すると、上部メニューにText Mesh Replacerというのが追加されるので、
このReplace Current Sceneを選択すると、現在のシーンの
Replace All Aceneを選択すると、全シーンのuGUIのTextをTextMesh Proへ置換してくれます。
もしくはTextが付いているオブジェクトを選択すると
Inspector上にReplace with TextMeshProというボタンが表示されるので、
ここから一つだけ置換する事も可能です。
ただし、置換する前にTextMesh Proで使えるFontやシェーダーなどのインポートが必要ですし、
(インポートしないと置換を実行しても何も反応がないっぽい?)
Textで使っているフォントから作ったフォントアセットを予め用意する必要もあります。
もし、フォントアセットがない場合は以下のような警告が出て、置換出来ません。
Text Mesh pro Font Arial is missing
実際に変換してみると以下のような感じになります。
アウトラインやシャドウのような別のコンポーネントを使って表現してるものは再現出来ませんが、
サイズや色、左寄せや傾きなどはそのまま再現してくれます。
旧TextMesh Proからの移行方法
ここでいう旧TextMesh ProとはアセットストアにあるTextMesh Proを使った場合の事で、
ようはUnity2017などからTextMesh Pro使っていて、
その後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)'
なお、今回はUnity2017.4.16f1からUnity2018.4.1f1への移行で試しました。
また、移行はミスると元のテキストの設定が消えたりするので、
バックアップをとるなど、復元出来るようにしておく事をオススメします。
肝心の移行の方法ですが、
Window->TextMeshPro->Project Files GUID Remapping Toolsを使います。
ただ、Unityをアップデートしてすぐにエラーが出た場合、表示されていない事もあるので、
そういう場合は、一旦元のTextMesh Proのフォルダをデスクトップなど別の場所に移動します。
するとエラーが消え(UIの表示も消える)、上記メニューが表示されるようになるので、
再度、TextMesh Proのフォルダをプロジェクトに戻します(エラーも戻る、UI表示は消えたまま)。
なお、TextMesh Proのフォルダを戻さず進めると、テキストの設定が消えました。
Project Files GUID Remapping Toolsを実行するとウィンドウが表示されるので、
Scan Project Filesのボタンを押します。
この時、設定を変更してくれ的なメッセージが出たら、
Project SettingsのEditorのVersion ControlのModeをVisible Meta Files、
Asset SerializationのModeをForce Textに変更し、再度ボタンを押します。
Scanが終了後、
Save Modified Project Filesのボタンを押します。
そして古いTextMesh Proのフォルダを削除し、
新TextMesh Proの基本アセットをインポートすれば、移行完了です。
これでテキストが表示されない場合は
シーンをリロードすれば、おそらく前と同じ状態で表示されるようになります。