前提・実現したいこと
Unityでゲームオブジェクトをクリック時に会話文を表示させ、何回も同じ処理を繰り返したい。
発生している問題・エラーメッセージ
unityでゲームオブジェクトをクリックすると会話文を表示させて、何度も同じ会話文がでるようなスクリプトを作りたいのですが、
オブジェクトクリック時(1回目)→会話文表示→クリック時会話文を消す→オブジェクトクリック時(2回目)→会話文表示→クリックしても会話文が消えない
という状態なり2回目の会話文が消えないままで処理が終わってしまうのですが、どうすれば処理を繰り返し行うことができるのでしょうか?
会話文の表示にはコールチンを使っていてTextO1に会話文TextO2にキャラ名Image4にメッセージボックスの画像を入れて、Setactiveで表示/非表示を切り替えています。
該当のソースコード
using
1using System.Collections.Generic; 2using UnityEngine; 3using UnityEngine.UI; 4using UnityEngine.EventSystems; 5using UnityEngine.SceneManagement; 6using System.Linq; 7 8public class Osonomessage : MonoBehaviour { 9 10 public GameObject parentobject;//キャンバス 11 public GameObject TextO1; 12 public GameObject TextO2; 13 public GameObject Image4; 14 15 // Use this for initialization 16 17 public void OnclickBaron2() 18 { 19 StartCoroutine(SampleCoroutine()); 20 } 21 IEnumerator SampleCoroutine() 22 { 23 24 Image4.SetActive(true); 25 TextO1.SetActive(true); 26 TextO2.SetActive(true); 27 28 parentobject = GameObject.Find("Canvas"); 29 Image4 = Instantiate(Image4) as GameObject; 30 Image4.transform.SetParent(parentobject.transform, false); 31 TextO1 = Instantiate(TextO1) as GameObject; 32 TextO1.transform.SetParent(parentobject.transform, false); 33 TextO2 = Instantiate(TextO2) as GameObject; 34 TextO2.transform.SetParent(parentobject.transform, false); 35 yield return new WaitUntil(Touch); 36 yield return new WaitWhile(Touch); 37 Image4.SetActive(false); 38 TextO1.SetActive(false); 39 TextO2.SetActive(false); 40 yield return new WaitUntil(Touch); 41 yield return new WaitWhile(Touch); 42 43 44 45 46 } 47 bool Touch() 48 { 49 return Input.GetMouseButtonDown(0); 50 } 51 52} 53
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー