今回は UnityTextMeshPro に伴うエラーについて。

TextMeshPro は Unityのデフォルトのテキストコンポーネントに代わり、とても見栄えの良いテキストを UIに表示することのできる機能です。
それを Unity2017以前に開発したゲームアプリを Unity2018以降のバージョンに変換した際に大量のエラーが発生。。。今回はこの解決法について。

【エラー例】
Unity_Error_38

Library\PackageCache\com.unity.textmeshpro@2.0.1\Scripts\Runtime\TMPro_Texts.cs(342,35): 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)’


【TextMeshProとは】

そもそも TextMeshPro とは と言うことも解説します。
Unity_Error_39

上記した通り TextMeshProは Unityのデフォルトのテキストコンポーネントに代わり、とても見栄えの良いテキストを UIに表示することができます。

通常のテキストコンポーネントの設定項目より多くの項目を持ち、高度なテキスト制御が可能となっています。フォントサイズや間隔、アラインメント、カーニングをカスタマイズできるオプションがあるほか、自動サイズ調整を有効にしたりコンテナのサイズにテキストを合わせられるオプションなんかもあります。
Unity_Error_40

また、デフォルトのテキストだとストレッチやサイズを大きく変更すると見た目がぼやけることがあります。これはリサイズされた場合の見た目に関する情報がないためで欠損したピクセルは Unityがざっくり調整してるわけです。が、TextMeshProは異なるレンダリング方法を使っているためクリアに表示されるわけです。

以下の Unityブログに分かりやすい機能紹介動画があります。
https://blogs.unity3d.com/jp/2017/03/20/textmesh-pro-joins-unity/

そして、以前は Asset Storeから無料ですがダウンロードしてインポートする必要がありました。しかし、2017年3月に TextMeshProは Unityに含まれ、現在は標準で Unityに搭載されております。

 
【エラーの解決法概要】

では、本題に入ります。今回のエラーは Unity2017以前に開発したゲームアプリを Unity2018以降のバージョンに変換した際に大量発生と言うところがポイントです。
要は、以前は TextMeshProが標準に含まれていなかったため自分でインポートしていました。しかし、現在は標準で搭載されており、そのまま以前の設定を利用するにはいくつか手順をふむ必要があります

今回のエラー解決の手順の概要は以下の通りとなります。0はエラー解決を順に説明するために環境を整えたので、実際の解決法は1からとなります。

0.エラー検証の準備
1.Assetsフォルダ内のTextMeshProフォルダを削除
2.プロジェクトを再オープン
3.TMP Essential ResourcesからImport
4.Project Files GUID Remapping Toolを起動
5.Conversion ToolでScan、Save


【エラーの解決法】

0.エラー検証の準備

エラーを解決法を説明するエラー検証の準備。簡単な通常のテキスト(以下の図の Gameビュー内の上)と TextMeshProのテキスト(下)を表示したプロジェクトを Unity 5.6で作成。
Unity_Error_41

そして、TextMeshProのテキストの設定は以下の通り。
Unity_Error_42

これを Unity 5.6から一気に Unity 2019.2に変換します。
Unity_Error_43

出ましたエラーが、かなり大量に。全て TextMeshPro関連の似たようなエラーです。
Unity_Error_44

そして、TextMeshProでのテキスト設定も みごとに消えてしまいました。。。
Unity_Error_45

この TextMeshProでのテキスト設定がまるごと消えてしまった状態から、バージョンアップした Unity上で元の TextMeshProでのテキスト設定を復活させていきたいと思います。


が、ここからは長くなりますので、今回はきりの良いここで区切って次回はこの TextMeshProでのテキスト設定の復活法を紹介いたします。
Sponsored Link