現状
ポーズボタンを押すとパネル(ポーズ解除ボタンとリトライボタンがある)を
表示させるようにしています。
一度リトライするとポーズ解除のボタンのスクリプトの25行目にNullのエラーが、
その状態でポーズボタンを押して解除ボタンを押すと
ゲーム自体は再開されますがパネルは非表示にならず、同じく23行目にNullのエラーが出ます。
一応ポーズ解除ボタンのソースコードの他にも
リトライボタンとポーズボタンのソースコードも載せておきます。
PanelBack:ポーズ画面のパネル
PauseButton:ポーズボタン
CancelButton:ポーズ解除ボタン(ポーズ画面のパネルの上に設定されている)
Run:プレイヤー
Locomotion1:プレイヤーにアタッチされている操作のスクリプト
4DNinjaRunning:ゲームのシーン名
ポーズ解除ボタンのソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PauseCancel : MonoBehaviour { private GameObject PanelBack; private GameObject PauseButton; private GameObject CancelButton; private GameObject Run; void Start () { PanelBack = GameObject.Find("PanelBack"); PauseButton = GameObject.Find("PauseButton"); Run = GameObject.Find("Run"); } public void Cancelpush(){ Time.timeScale = 1f; Run.GetComponent<Locomotion1>().enabled = true; bool isActivePanelBack = false; bool isActivePauseButton = true; if(PanelBack.activeInHierarchy) { //23行目です isActivePanelBack = false; }else{ isActivePauseButton = true; //25行目です } PanelBack.SetActive(isActivePanelBack); PauseButton.SetActive (isActivePauseButton); } }
###リトライボタンのソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class RetryButton : MonoBehaviour{ private GameObject PanelBack; private GameObject PauseButton; private GameObject CancelButton; private GameObject Run; void Start () { PanelBack = GameObject.Find("PanelBack"); PauseButton = GameObject.Find("PauseButton"); Run = GameObject.Find("Run"); } public void OnRetry() { Time.timeScale = 1f; Run.GetComponent<Locomotion1>().enabled = true; bool isActivePanelBack = false; bool isActivePauseButton = true; SceneManager.LoadScene("4DNinjaRunning"); if(PanelBack.activeInHierarchy) { isActivePanelBack = false; }else{ isActivePauseButton = true; } PanelBack.SetActive(isActivePanelBack); PauseButton.SetActive (isActivePauseButton); } }
###ポーズボタンのソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PauseController : MonoBehaviour { private GameObject PanelBack; private GameObject PauseButton; private GameObject Run; void Start () { PanelBack = GameObject.Find("PanelBack"); PauseButton = GameObject.Find("PauseButton"); Run = GameObject.Find("Run"); PanelBack.SetActive (false); } public void Buttonpush(){ Time.timeScale = 0f; Run.GetComponent<Locomotion1>().enabled = false; gameObject.SetActive (false); bool isActivePanelBack = true; bool isActivePauseButton = true; if(PanelBack.activeInHierarchy) { isActivePanelBack = false; }else{ isActivePauseButton = false; } PanelBack.SetActive(isActivePanelBack); PauseButton.SetActive (isActivePauseButton); } }
バージョン
Unity 2018.4.16f1 Personal
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/30 09:52