1.实现一个简单的功能,点击退出键,或者手机home键,出现一个提示标签,如果在两秒之内再次点击则退出游戏,2秒之后再次点击出现提示标签。
public class QuitGameHotFix : BasePanelCall
{
private bool timer;
private float _lastTime;
private readonly float _waitTime = 2;
private Transform _notice;
public Transform notice;
public override void Start(Transform t)
{
base.Start(t);
_notice = t.Find("Notice");
}
public override void Update()
{
base.Update();
if (timer)
{
_lastTime += Time.deltaTime;
if (_lastTime > _waitTime)
{
timer = false;
}
}
if (CheckIsQuitGame())
{
if (!timer)
{
timer = true;
_lastTime = 0;
ShowNotice();
}
else
{
Debug.Log("呼叫退出0000");
Application.Quit();
}
}
}
private bool CheckIsQuitGame()
{
//Debug.Log("CheckIsQuitGame");
if (Input.GetKeyDown(KeyCode.Escape))
{
Debug.Log("KeyCode.Escape");
return true;
}
/* if (Application.platform == RuntimePlatform.Android && Input.GetKeyDown(KeyCode.Home))
{
return true;
}*/
return false;
}
private void ShowNotice()
{
if (notice == null)
{
notice = GameObject.Instantiate(_notice);
Transform parent;
if (SceneManager.GetActiveScene().name == SceneEnum.BattleScene.ToString())
{
parent = BattleUIHotFixManager.Instance.LegacyCanvas;
}
else if (SceneManager.GetActiveScene().name == SceneEnum.Chest.ToString())
{
parent = ChestManagerHotFix.Instance._bgCanvas;
}
else if (SceneManager.GetActiveScene().name == SceneEnum.MapScene.ToString())
{
parent = MapConfigManager.Instance.EqupimentCanvas.transform;
}
else if (SceneManager.GetActiveScene().name == SceneEnum.LoginScene.ToString())
{
parent = GameObject.Find("Canvas").transform;
}
else
{
parent = GameObject.Find("Canvas").transform;
}
notice.transform.SetParent(parent, false);
notice.transform.localScale = Vector3.one;
notice.transform.SetAsLastSibling();
notice.transform.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, 50);
WaitForRunTool.Run(Destroy(notice.gameObject));
}
}
private IEnumerator Destroy(GameObject go)
{
yield return new WaitForSeconds(2f);
GameObject.Destroy(go);
}
public override void OnDestroy()
{
base.OnDestroy();
_notice = null;
notice = null;
}
}