Unity2018にアプデしたらTextMeshProでエラーが出た

このエントリーをはてなブックマークに追加
はてなブックマーク - Unity2018にアプデしたらTextMeshProでエラーが出た
[`yahoo` not found]
[`livedoor` not found]

Unity2017.2からUnity2018.2へアプデした際、いつも通りTextMeshProにエラーが出たので戦いました。

今回は以下のようなエラーでした。
/Users/xxxxx/Library/Unity/cache/packages/packages.unity.com/com.unity.textmeshpro@1.2.4/Scripts/Runtime/TMPro_Private.cs(3551,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)’

Unity2018は登場から時間が経っていたので、まずは先人の知恵をお借りしようとググってみたところ、そのままズバリの解決策がコチラ(ニートの活動報告書)の記事に書かれてたので、有り難く参考にしました。
詳細は元ネタ参照で、要約すると以下のような感じです。

①Assets>TextMeshProフォルダ削除して、プロジェクトをOpenし直し。
②Window>TextMeshPro>ImportTMPEssentialResourcesを開いてImport。
③Window>TextMeshPro>ProjectFilesGUIDRemappingToolでScanしてSave。


ただ、私の場合は、③でScanする際に警告が出ました。

MacのFinderに、Unityのファイルと同じ名前の.metaファイルが生成されまくるのがイヤなので、Metaファイルのvisibleをhiddenにしてました。
これを見えるようにして、更にAsset Serialization ModeをForce to textにしろということのようです。


Edit>ProjectSettingsからEditorのInspectorを開いて、、、


言われた通りに設定します。


今度はScanできました。

※このScanですが、バックグラウンドでは処理してくれないようです(UnityのEditorは全般的にそうかも)。
なので、分母が5000とかあって時間がかかるからってバックグラウンドに回して放っておくと、固まって止まってしまった挙句やり直すという、私のように時間を無駄にすることもあるのでご注意ください。


完了したらSaveを押すと、ダイヤログが出るのでYESします。


最後にシーンをリロードするか聞いてくるので、Reloadしておきます。
あと、全部終わった後に、私はやっぱり.metaファイルを見たくないので、EditorのInspectorで.metaファイルをhiddenに戻しました。
これでTextMeshProのエラーは解消!
いつも、何時間もかけて全TextMeshProのコンポーネントを貼り直して調整してたので、UnityのメジャーアプデでTextMeshProの作業が簡単に終わるのは嬉しいです。

今回の記事でUnity2018へ移行して引っかかったのは「とけいであそぶ」でした。

TextMeshProは、全アプリで使っていたので、これが解決できるだけで凄い助かりました!
もちろん、「とけいであそぶ」は無事にiOS/AndroidともUnity2018に移行できました!

Unity2018.2
macOS High Sierra