纳金网

标题: Unity_倒计时的代码 [打印本页]

作者: 狂风大尉    时间: 2014-6-30 18:33
标题: Unity_倒计时的代码
  1. using UnityEngine;
  2. using System.Collections;
  3. using System;
  4. public class CountTime : MonoBehaviour {
  5.         // 初始化60s倒计时 //
  6.         public int totalSeconds = 60;
  7.         // 倒计时当前秒数 //
  8.         private int leaveSeconds;

  9.         private bool onCountDown = false;

  10.         private string countDownTitle = "开始";

  11.         void Awake()
  12.         {
  13.                 leaveSeconds = totalSeconds;
  14.         }
  15.         void OnGUI()
  16.         {
  17.                 GUI.Button(new Rect(50, 50, 50, 50), leaveSeconds.ToString());// 倒计时秒数 //

  18.                 if (GUI.Button(new Rect(150,50,80,30),countDownTitle))
  19.                 {
  20.                         if (countDownTitle == "开始")
  21.                         {
  22.                                 countDownTitle = "暂停";
  23.                                 onCountDown = true;
  24.                                 StartCoroutine(DoCountDown());
  25.                         }
  26.                         else
  27.                         {
  28.                                 countDownTitle = "开始";
  29.                                 onCountDown = false;
  30.                                 StopAllCoroutines(); //只要StartCoroutine后就一直存在,而且还会叠加。导致一秒要减你2,3,4...秒不等。所以在暂停的时候要StopAllCoroutines()
  31.                         }
  32.                 }
  33.         }
  34.         // Use this for initialization
  35.         void Start ()
  36.         {
  37.         }
  38.         // Update is called once per frame
  39.         void Update ()
  40.         {
  41.                 print(countDownTitle.ToString()+",leave seconds:"+leaveSeconds.ToString());// 每帧打印当前秒数 //
  42.                 //if (onCountDown)
  43.                 //{
  44.                 // onCountDown = false;
  45.                 // StartCoroutine(DoCountDown());
  46.                 //} //一开始StartCoroutine是放在Update下触发的,需要加判断,并且要暂停的时候逻辑上不好控制,改到在OnGUI内鼠标点击后控制
  47.         }
  48.         IEnumerator DoCountDown()
  49.         {
  50.                 while (leaveSeconds>0)
  51.                 {
  52.                         yield return new WaitForSeconds(1f);
  53.                         leaveSeconds--;//  当秒数>0 的时候, --
  54.                 }
  55.         }
  56. }
复制代码

作者: HIDEOKOJIMA    时间: 2014-6-30 18:49
Thanks for sharing !
作者: wucnj    时间: 2014-7-1 10:34
感谢分享!!!
作者: icerein    时间: 2014-7-1 12:47
感谢分享!!!




欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5