やりたいこと
unityとC♯について質問です。下の3つのコードを作成し、一つ目のコードをtext、二つ目のコードをbuttonにアタッチして、二つ目のコードがアタッチされたbuttonを押すと時間経過がtextのところで始まる、もう一度buttonを押すと時間経過が一時的に止まるというのをbuttonを押すたびに繰り返すようにしました。しかし、時間経過が一時停止してる段階だと他のupdate関数を用いる処理が動かなくなる場合があります。例えば3つ目のWキーを押すとアタッチしたキューブなどのオブジェクトが動くコードなどが動きません。これの原因としては、一つ目のコードのTime.timeScale =0;のところ周辺にあると思うのですが、経過時間を一時停止させている時でも3つ目のコードのようなコードを動かすコードの書き方はありませんか??何卒よろしくお願いします!!
C♯
1 2using UnityEngine; 3using System.Collections; 4using UnityEngine.UI; 5 6public class TimerTime : MonoBehaviour 7{ 8 9 private Text timerText; 10 private int minute,hour; 11 private float seconds; 12 private float oldSeconds; 13 // 最初の時間 14 private float startTime; 15 16 void Start() 17 { 18 timerText = GetComponentInChildren<Text>(); 19 oldSeconds = 0; 20 startTime = Time.time; 21 Time.timeScale =0; 22 } 23 24 void Update() 25 { 26 27 // Time.timeでの時間計測 28 seconds = Time.time - startTime; 29 30 minute = (int)seconds / 60; 31 32 hour= (int)minute / 60; 33 34 if ((int)seconds != (int)oldSeconds) 35 { 36 timerText.text = hour.ToString("00") + ":" + ((int)(minute % 60)).ToString("00") + ":" + ((int)(seconds % 60)).ToString("00"); 37 } 38 oldSeconds = seconds; 39 40 41 } 42 43 44 45 } 46
C♯
1 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class TimerPause : MonoBehaviour 7{ 8 // Start is called before the first frame update 9 public void Onclick() 10 { 11 Time.timeScale = Mathf.Approximately(Time.timeScale, 0f) ? 1f : 0f; 12 } 13 14} 15
C♯
1 2using UnityEngine; 3using System.Collections; 4public class Cube : MonoBehaviour 5{ 6 // Use this for initialization 7 void Start() 8 { 9 } 10 // Update is called once per frame 11 void Update() 12 { 13 if (Input.GetKey(KeyCode.W)) 14 { 15 transform.position += new Vector3(0, 0, 1 * Time.deltaTime); 16 } 17 18 } 19} 20
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/20 08:04 編集
2021/09/20 08:45