0
0

TextMeshProがアサインできない!

Last updated at Posted at 2024-08-03

徹夜あけでアホになっていたとはいえ紛らわしかったのでメモ

ことの経緯

スクリプトでカウントした回数をゲーム内で表示するようにしたかったので,その辺で転がっているチュートリアル記事を見ながらこんな感じのコードを書いた.

Controller.cs
public class Controller : MonoBehaviour
{
    public TextMeshProUGUI countText;
    
    //うんたら
}

が,インスペクタのCount Textにヒエラルキーで作ったText(TMP)をアサインしたかったが弾かれてしまう.
スクリーンショット 2024-08-04 6.36.31.png

で,散々調べてもよくわからなかったのでこの日は諦めて寝たのだけど,次の日に原因を理解.

原因

3D ObjectのTextMeshProUIのTextMeshPro を混同していたことが原因だった.

右クリック > 3D Object > Text - TextMeshProで作ったText(TMP)を見ると,TextMeshPro - TextコンポーネントとTextMeshPro Meshコンポーネントがあるのに対し,
スクリーンショット 2024-08-04 6.53.17.png
右クリック > UI > Text - TextMeshProで作ったText(TMP)にはTextMeshPro - Text(UI)コンポーネントのみついている.
スクリーンショット 2024-08-04 6.52.05.png

つまり,コード上でUIのTextMeshProを宣言しているのに,3D ObjectのTextMeshProをアサインしようとしていたから弾かれていたということ.

解決法

そういうわけで型を揃えてやれば問題なくアサインできた.

Controller.cs
public class Controller : MonoBehaviour
{
    public TextMeshPro countText;
    
    //うんたら
}

スクリーンショット 2024-08-04 7.09.15.png

コードではTextMeshProUGUIのままオブジェクトを作り直してもいいはず.


アサインできなかったら最初に疑うのは型間違いだろうけど,初心者にはめちゃ紛らわしかったです.
徹夜は注意散漫になるのでなるべくやめましょう.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0