###前提・実現したいこと
Unityでシステムを作りながら、プログラミングの勉強をしています。
今回は、タイマー処理を用いたプログラムを作成したいと考え、挑戦して来ましたが、行き詰ってしまい、皆様のお力をお借りしたいと考え、質問させていただきました。
今回実現したいことは、プレハブ化したボタンの子オブジェクトにあるテキストをタイマー処理を用いて、表示を変えるプログラムを作成しています。
ボタン上のテキストを10秒経過したら、表示をOK!と表示したいです。
###発生している問題・エラーメッセージ
今回プログラムを作成していて、行き詰ってしまったことは、
プレハブ化したボタンの、timerという名前の子オブジェクトが取得できていないためか、実行すらできませんでした。
起きたエラーメッセージは
Error CS0103 The name 'timer' does not exist in the current context
と出てしまいます。
###該当のソースコード
timer.C#
C#
1using UnityEngine; 2using System.Collections; 3using UnityEngine.UI; 4 5public class timer : MonoBehaviour 6{ 7 [SerializeField] 8 RectTransform prefab = null; 9 10 public float Timer = 10; 11 12 // Use this for initialization 13 void Start() 14 { 15 var item = GameObject.Instantiate(prefab) as RectTransform; 16 item.SetParent(transform, false); 17 var timer = item.Find("timer").GetComponentInChildren<Text>(); 18 } 19 20 // Update is called once per frame 21 void Update() 22 { 23 24 Timer -= Time.deltaTime; 25 26 // マイナス値にならないように 27 Timer = Mathf.Max(Timer, 0); 28 if (Timer == 0) 29 { 30 timer.text = "OK!"; 31 Timer = 10; 32 } 33 } 34} 35
###試したこと
上記のソースコードtimer.C#ではエラーが出てしまうため、
void Start()部分を、void Update()の中に入れると、起動はするのですが、ボタンのクローンが数多く作成されてしまいます。
やはり、void Start()で一度コンポーネントを取得しておかなければいけないのではと考えていますが、上記のエラーがでてしまい、どうしてよいのか煮詰まっています。
1つのボタン上だけで、時間が0になったときにtimerテキストをOK!と表示するにはどのようにしたろよろしいでしょうか。
プログラミング初心者なもので、まだ至らない点等多いのですが、何卒お力をお貸ししていただけませんでしょうか。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/09 06:22
退会済みユーザー
2016/10/09 06:26