UnityUnityメモ

Unityで、ボタンクリックでテキストを表示し、時間経過で非表示にする

Unity

はじめに

こんにちは!今回は、Unityでボタンをクリックしたときにテキストを表示し、一秒後にそのテキストを非表示にする方法を紹介します。この方法はとてもシンプルなので、初心者の方でも簡単にできますよ!

Unityを触ったことがないという方はコチラの記事から見てみてください!

ボタンの作成

  • ヒエラルキーウィンドウで右クリックし、「UI」→「Button」を選びます。
  • すると、CanvasとButtonが追加されます。
  • Buttonを選び、インスペクターウィンドウで見た目を調整しましょう。



テキストの追加

  • ヒエラルキーウィンドウで右クリックし、「UI」→「Text」を選びます。
  • Textを選び、インスペクターウィンドウで表示するテキストやサイズなどを調整しましょう。



スクリプトの作成

  • ヒエラルキーウィンドウで右クリックし、「Create」→「C# Script」を選びます。スクリプト名は「BallController」にしましょう。
  • スクリプトをダブルクリックして開き、以下のようなコードを書きます。

コード全体の説明

このスクリプトはUnityで使われるC#のスクリプトです。ボタンをクリックするとテキストが1秒間表示され、その後消えます。

各部分の説明

  1. 必要なライブラリのインポート
    • UnityEngine: Unityの基本的な機能を使うためのライブラリ。
    • UnityEngine.UI: ユーザーインターフェース、例えばボタンやテキストを操作するためのライブラリ。
    • System.Collections: コルーチンを使うためのライブラリ。
  2. クラスの定義
    • ButtonScript: このスクリプトの名前。
    • MonoBehaviour: Unityの基本クラス。これを継承することでUnityの機能を使えるようになります。
  3. ボタンとテキストの宣言
    • yourButton: ユーザーがクリックするボタン。
    • yourText: 表示したり隠したりするテキスト。
  4. Startメソッド
    • Start(): ゲームが始まったときに一度だけ呼ばれるメソッド。
    • yourButton.onClick.AddListener(() => StartCoroutine(ShowAndHideText()));: ボタンがクリックされたときにShowAndHideTextというコルーチンを開始します。
  5. コルーチン: ShowAndHideText
    • IEnumerator ShowAndHideText(): コルーチンという特殊なメソッド。一定の時間待つことができます。
    • yourText.gameObject.SetActive(true);: テキストを表示します。
    • yield return new WaitForSeconds(1);: 1秒待ちます。
    • yourText.gameObject.SetActive(false);: テキストを非表示にします。

全体の動き

  1. ゲームが始まると、Startメソッドが実行されます。
  2. Startメソッドでは、ボタンがクリックされたときにShowAndHideTextコルーチンが実行されるように設定されます。
  3. ボタンがクリックされると、ShowAndHideTextコルーチンが始まります。
  4. コルーチンでは、最初にテキストが表示され、1秒待った後にテキストが非表示になります。
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class ButtonScript : MonoBehaviour
{
    public Button yourButton;
    public Text yourText;

    void Start()
    {
        yourButton.onClick.AddListener(() => StartCoroutine(ShowAndHideText()));
    }

    IEnumerator ShowAndHideText()
    {
        yourText.gameObject.SetActive(true);
        yield return new WaitForSeconds(1);
        yourText.gameObject.SetActive(false);
    }
}

スクリプトをオブジェクトにアタッチ

  • ヒエラルキーウィンドウでオブジェクトを選択し、スクリプトをドラッグしてインスペクタウィンドウにドロップします。
  • インスペクタウィンドウの「ButtonScript」コンポーネントで「yourButton」「yourText」フィールドに対応するオブジェクトをドラッグ&ドロップします。



実行してみよう

  • これで設定は完了です!再生ボタンをクリックして、シーンを実行してみましょう。ボタンをクリックすると、テキストが表示され、一秒後に非表示になります。

これで、Unityでボタンをクリックしてテキストを表示し、一秒後に非表示にする方法の紹介は終わりです。ぜひ試してみてくださいね!



よくある質問

Q
テキストが表示されないのはなぜですか?
A

テキストオブジェクトが「yourText」フィールドに正しくリンクされているか確認してください。また、最初に非表示にしていた場合、スクリプトで再び表示されるか確認しましょう。

Q
ボタンをクリックしても何も起こらないのはなぜですか?
A

スクリプトがボタンに正しくアタッチされているか、ボタンの「On Click ()」設定が正しく行われているか確認してください。

Q
他の方法でテキストを非表示にすることはできますか?
A

はい、テキストオブジェクト自体を無効化(SetActive(false))する方法もあります。ただし、今回の方法は単に表示・非表示を切り替えるシンプルな方法です。