
お世話になっております。
Unity初心者のものです。
0. やりたいこと
ゲームでよくあるメニュー画面を開いているときはPlayerの行動のみを一時停止させるような機能を実装したいと考えております。
※メニュー画面と一部ボタン機能(メニュー画面を閉じる機能)は操作できる。
1. 仕組み
1.InputSystemであらかじめ設定したボタン(Tabキー)を押下すると、GameSystemクラスの「OnMenu関数」を呼び出す。
2.GameSystemクラスの「OnMenu関数」から、UIControllerクラスの「MenuUI_Open関数」
を呼び出し、一時停止させる。
※UIControllerクラスはメニュー画面のコンポーネントについている。
※GameSystemクラスは空のオブジェクトのコンポーネントについている。
2. 困っていること
MenuUI_Open関数の「Time.timeScale」がプロジェクト全体を止めてしまっているようで、メニュー画面の操作も止めてしまう。
ソースコート
■GameSystemクラス
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5using UnityEngine.InputSystem; 6 7public class GameSystem : MonoBehaviour 8{ 9 10 public UIController uiController; //UIControllerクラス 11 12 void OnMenu(InputValue inputValue) 13 { 14 uiController.MenuUI_Open() 15 } 16}
■UIControllerクラス
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine.EventSystems; 4using UnityEngine; 5using UnityEngine.UI; 6using UnityEngine.InputSystem; 7 8public class UIController : MonoBehaviour 9{ 10 11 public Button primarybutton; //最初に選択されるボタン 12 public GameObject MenuUI; //メニュー画面 13 14 public void MenuUI_Open() //メニュー画面コントロール 15 { 16 MenuUI.SetActive(!MenuUI.activeSelf); 17 if (MenuUI.activeSelf == true) 18 { 19 Time.timeScale = 0; 20 primarybutton.Select(); 21 } 22 else 23 { 24 Time.timeScale = 1; 25 } 26 } 27} 28
情報不足でしたら申し訳ございません。
お手数をおかけしますが、正しい使い方をご教示いただけると幸いです。