【Unity】クリック待ちの処理を実装する

この記事は約4分で読めます。

どうもなおゆです。

現在作成中の子供向けアプリで、チュートリアル画面を実装した時に使った、クリック待ちの処理を備忘として残しておきます。

今回のテーマ

クリック待ちの処理を実装する。

これが実際のチュートリアル画面の導入部分です。

ネズミのセリフ「あそびかたを~」と「ぼくがちらかした~」の間がクリック待ち状態となっています。クリックされると、セリフと画像が切り替わります。行っている処理の流れはこんな感じです↓



クリック待ちの処理はコルーチン内でWaitUntilを使っています。

yield return new WaitUntil(() => Input.GetMouseButtonDown(0)); // クリック待ち処理

ちなみにInput.GetMouseButtonDownはスマホゲームの場合タップの処理として扱われます。

コードはこんな感じです↓

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // <-- 忘れがち
using DG.Tweening; // <-- 忘れがち

public class TutorialScript : MonoBehaviour
{
    public Text speechBubbleText; // ネズミのセリフ 
    public Text playTutorialText; // 「せつめいチュウ」の文字
    private CanvasGroup canvasGroup;
    public Image[] tutoRialImages = new Image[10]; // 画像用配列
    private string[] mouseLines = {"あそびかた を せつめいするチュー", // セリフ0
                       "ぼくが ちらかした たべものを おそうじ してほしいチュー", // セリフ1
                   };
  void Start()
    {
       StartCoroutine("TutorialStart"); // コルーチン開始
    } 

  private IEnumerator TutorialStart()
    {
        speechBubbleText.enabled = false; // ネズミのセリフ非表示
        playTutorialText.enabled = false; // 「せつめいチュウ」の文字 非表示
        for (int i = 1; i < tutoRialImages.Length; i++) // 画像たちを非表示
        {
            tutoRialImages[i].enabled = false;
        }
        canvasGroup = tutoRialImages[0].GetComponent<CanvasGroup>(); // 暗転用画像
        yield return new WaitForSeconds(0.7f); // 暗転前の微妙な間

        canvasGroup.DOFade(0.5f, 1.0f); // 暗転
        yield return new WaitForSeconds(1.0f); // 間
        tutoRialImages[1].enabled = true; // ネズミ 表示
        tutoRialImages[2].enabled = true; // 吹き出し枠 表示
        speechBubbleText.enabled = true; // ネズミのセリフ 表示
        playTutorialText.enabled = true; // 「せつめいチュウ」の文字 表示
        speechBubbleText.text = mouseLines[0]; // セリフ「あそびかたを~」

        yield return new WaitUntil(() => Input.GetMouseButtonDown(0)); // クリック待ち処理

        speechBubbleText.text = mouseLines[1]; // セリフ「ぼくがちらかした~」
        tutoRialImages[3].enabled = true; // バナナ表示
        yield return new WaitForSeconds(1.0f); // 間

        yield return new WaitUntil(() => Input.GetMouseButtonDown(0)); // クリック待ち処理
        // 以降は省略
     }
}

コメント

タイトルとURLをコピーしました