前提・実現したいこと
Unityでゲームを作っています。
画面をクリックするとセリフが消えるようになっていますが、同時に画面のボタンも押してしまいます。
そこで、セリフを表示するImageオブジェクトが出ている間はボタンを無効にしたいのですが、うまくいきません。
まず、セリフが出るとフラグflag_talkingが立ちます。
Update関数内にInputGetMouseDown関数を書き、フラグが立っている間に画面がタップされるとフラグが降りるようになっています。
ボタン関数を別に作り、フラグが立っている間はreturnして、関数を実行しないようにしてあります。
ですが、ゲームを始めるとUpdate関数が先に呼ばれてしまい、ボタン関数内が実行されてしまいます。
セリフオブジェクトが出ている間ボタンを無効にするにはどうしたら良いでしょうか。
お知恵をお貸しください。
*UIというのはセリフを扱う専用の別スクリプトの名前です。empty_scriptsという空オブジェクトに付けてあります。
*DisAppear_lines()は、セリフを非表示にする関数です。
該当のソースコード
c#
1 public GameObject empty_scripts; //セリフ専用のスクリプトが付いている空オブジェクト 2 public bool flag_welcome; //ホテルマンに歓迎の言葉を言われたか 3 4 // Update is called once per frame 5 void Update() 6 { 7 //画面をタップしたら 8 if (Input.GetMouseButtonDown(0) == true) 9 { 10 //会話表示中なら消す 11 if (UI.flag_talking == true) 12 empty_scripts.GetComponent<UI>().DisAppear_lines(); 13 } 14 } 15 16 //hotelman_counterボタンを押したら 17 public void PushButton_hotelmanInCounter() 18 { 19 if (UI.flag_talking == true) return; //会話が表示されていたら反応しない 20 21 if (flag_welcome == false) 22 { 23 empty_scripts.GetComponent<UI>().DisplayLines_others("ホテルマン", "ご宿泊でしたら、カウンターのカードにお名前をご記入ください。"); 24 } 25 else 26 { 27 empty_scripts.GetComponent<UI>().DisplayLines_others("ホテルマン", "どうぞごゆっくりお寛ぎください。"); 28 } 29 } 30
試したこと
Update関数をボタン関数より後ろに移動させたりしたのですが、だめでした。
補足情報(FW/ツールのバージョンなど)
Unity2018.3.1f1
VisualStudio2017.comunity
回答1件
あなたの回答
tips
プレビュー