有些时候,有这样的需求,在一个场景中需要等待N秒后切换到另一个场景,怎么写代码呢?
进入正文:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
///
/// 待机切换场景
///
public class SelfMotion : MonoBehaviour
{
private float runningTime = 10f;//程序运行时间
private float StandbyTime = 270f;//无操作时间(待机时间)
[HideInInspector]
public bool standby = false;//是否处在待机状态
public bool startCountTime = false;//是否可以统计待机时间
private int standbyTime = 0;//待机时间
private int time = 0;//帧数,用于统计待机时间
private Vector3 prevMousePos = Vector3.zero;//鼠标上一帧所处的位置
///
/// 程序首次运行时,等待十秒钟开始统计待机时间
///
///
IEnumerator StartPrepareStandby()
{
yield return new WaitForSeconds(runningTime);
startCountTime = true;//开始统计待机时间
}
void Start()
{
//调用开始统计待机时间的协程
StartCoroutine(StartPrepareStandby());
}
void FixedUpdate()
{
if (startCountTime)
{//待机状态
if (Input.mousePosition == prevMousePos)
{//判断鼠标是否移动
time++;
}
else
{
//鼠标移动情况下,重置待机时间和帧数
standbyTime = 0;
time = 0;
}
}
if (time >= 50)
{
time = 0;
standbyTime++;//待机秒数
}
if (standbyTime > StandbyTime)
{
//待机时间超过N秒则开始进入另一个界面(我的是默认返回首页)
Application.LoadLevel(0);
}
}
void Update()
{
if (Input.GetMouseButtonUp(0))
{//鼠标抬起开始判断是否处于待机
startCountTime = true;
prevMousePos = Input.mousePosition;
}
//记录每一帧的鼠标位置
prevMousePos = Input.mousePosition;
}
}
好了,就是这样的。因为LZ的场景需要等待4分半,所以用了270这个数。。。
LZ只是一枚小菜鸟,有什么需要改进的,请大牛留下指导,多多提意见!!!