前提・実現したいこと
Unityでアラームアプリを作っています。ユーザがプルダウンで選択した時刻(Get_DropDown.csに格納されている)を現在時刻と比較するためのスクリプト(Compare_Time.cs)で参照できるように作成している最中です。現在、Get_DropDown.csにてプルダウンで取得したアラームの時間、分、秒をCompare_Time.csで参照する際に、時間、分、秒すべて0で受け取られていることになっていおり、先にすすめることができません。
発生している問題・エラーメッセージ
該当のソースコード
C#
1//Get_DropDown.cs 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEngine.UI; 6 7/// <summary> 8/// このスクリプトはドロップダウンリストから選ばれた時刻を取得し、 9/// DataTime型変数に格納しておく。 10/// </summary> 11 12public class Get_DropDown : MonoBehaviour 13{ 14 [HideInInspector] 15 public int Selected_Hour; 16 [HideInInspector] 17 public int Selected_Min; 18 [HideInInspector] 19 public int Selected_Sec; 20 21 public void OnValueChanged_1(int result) 22 { 23 Selected_Hour = result; 24 Debug.Log("Selected Hour " + Selected_Hour); 25 } 26 27 public void OnValueChanged_2(int result) 28 { 29 Selected_Min = result; 30 Debug.Log("Selected Min " + Selected_Min); 31 } 32 33 public void OnValueChanged_3(int result) 34 { 35 Selected_Sec = result; 36 Debug.Log("Selected Sec " + Selected_Sec); 37 } 38 39 // Start is called before the first frame update 40 void Start() 41 { 42 43 } 44 45 // Update is called once per frame 46 void Update() 47 { 48 49 50 } 51 52}
C#
1//Compare_Time.cs 2using System; 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6using UnityEngine.UI; 7 8/// <summary> 9/// このスクリプトはDateTime型の現在時刻と、 10/// Get_DropDownにて取得した設定時刻を比較する。 11/// </summary> 12 13public class Compare_Time : MonoBehaviour 14{ 15 Get_DropDown tmp_alarm; 16 17 public GameObject B_AlarmSet; 18 19 [HideInInspector] 20 public int Alarm_Hour; 21 [HideInInspector] 22 public int Alarm_Min; 23 [HideInInspector] 24 public int Alarm_Sec; 25 26 private int setting = 0; 27 private int play = 0; 28 //時刻セットしたかどうか、指定時刻になったかどうか判断(0・false 1・true) 29 30 public Text AramText; 31 32 public string alarm;//アラーム時刻を合体させる 33 DateTime datetime_now;//現在の時刻 34 DateTime datetime_alarm;//アラームの時刻S 35 36 //public void AlarmDisplay_Form_Load() 37 //{ 38 // //アラームラベルの初期表示 39 // AramText.text = "Please decide the specified time "; 40 //} 41 42 public void AlarmSet_Button_Click() 43 { 44 //ドロップダウンからの値をGet_DropDown.csから取得 45 **tmp_alarm = GameObject.Find("C_Get_DropDown").GetComponent<Get_DropDown>();** 46 47 //アラーム時刻を時間・分・秒にわけて受け取る 48 Alarm_Hour = tmp_alarm.Selected_Hour; 49 Alarm_Min = tmp_alarm.Selected_Min; 50 Alarm_Sec = tmp_alarm.Selected_Sec; 51 52 //指定時間と分をあわせて日付データに変換できる形にする 53 alarm = Alarm_Hour + ":" + Alarm_Min + ":" + Alarm_Sec; 54 55 //日付データに変換 56 datetime_alarm = DateTime.Parse(alarm); 57 58 59 Debug.Log("Alarm_Hour " + tmp_alarm.Selected_Hour); 60 Debug.Log("Alarm_Min " + tmp_alarm.Selected_Min); 61 Debug.Log("Alarm_Sec " + tmp_alarm.Selected_Sec); 62 63 //AramText.textの表示変化 64 B_AlarmSet.GetComponentInChildren<Text>().text = Alarm_Hour + ":" + Alarm_Min + ":" + Alarm_Sec; 65 //AramText.text = Alarm_Hour + ":" + Alarm_Min + ":" + Alarm_Sec; 66 67 68 //セットされたをtrueに、プレイされたをfalseにもどす。 69 setting = 1; 70 play = 0; 71 } 72 73 74 75 // Start is called before the first frame update 76 void Start() 77 { 78 } 79 80 // Update is called once per frame 81 void Update() 82 { 83 // 現在時刻を取得 84 datetime_now = DateTime.Now; 85 }
試したこと
どうやらGet_DropDownゲームオブジェクトのインスペクターに写っていた変数が0にセットされていたので、プログラムコードのように[HideInInspector]をつけてコード内の値を優先し、インスペクターからは非表示にしてみましたが、状況が変わらず、0のままになってしまいます。
補足情報(FW/ツールのバージョンなど)
Unity 2020.3.8f1 Personal
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 05:43
2021/08/21 05:45
2021/08/21 05:49
2021/08/22 00:51