徹夜あけでアホになっていたとはいえ紛らわしかったのでメモ
ことの経緯
スクリプトでカウントした回数をゲーム内で表示するようにしたかったので,その辺で転がっているチュートリアル記事を見ながらこんな感じのコードを書いた.
public class Controller : MonoBehaviour
{
public TextMeshProUGUI countText;
//うんたら
}
が,インスペクタのCount Text
にヒエラルキーで作ったText(TMP)
をアサインしたかったが弾かれてしまう.
で,散々調べてもよくわからなかったのでこの日は諦めて寝たのだけど,次の日に原因を理解.
原因
3D ObjectのTextMeshPro と UIのTextMeshPro を混同していたことが原因だった.
右クリック > 3D Object > Text - TextMeshProで作ったText(TMP)
を見ると,TextMeshPro - Text
コンポーネントとTextMeshPro Mesh
コンポーネントがあるのに対し,
右クリック > UI > Text - TextMeshProで作ったText(TMP)
にはTextMeshPro - Text(UI)
コンポーネントのみついている.
つまり,コード上でUIのTextMeshProを宣言しているのに,3D ObjectのTextMeshProをアサインしようとしていたから弾かれていたということ.
解決法
そういうわけで型を揃えてやれば問題なくアサインできた.
public class Controller : MonoBehaviour
{
public TextMeshPro countText;
//うんたら
}
コードではTextMeshProUGUI
のままオブジェクトを作り直してもいいはず.
アサインできなかったら最初に疑うのは型間違いだろうけど,初心者にはめちゃ紛らわしかったです.
徹夜は注意散漫になるのでなるべくやめましょう.