嗨我有一个2d topdown rpg游戏,我想知道当我的玩家失去他所有的心(生命)时,是否有一种方法可以锁定我的游戏一段时间(倒计时)。无论用户在倒计时完成之前无法访问我的游戏。当你失去所有生命时,就像糖果粉碎一样。到目前为止,我已经有一个向下滑动的面板,当玩家死亡时(当他所有人的心都消失时)说GameOver。但我不确定如何在一段时间内锁定我的游戏,我也希望用户返回主菜单,即使游戏仍然锁定。就像我之前所说的,我希望它类似于糖果粉碎传奇,如果玩家失去了生活,那么他们将不得不等待一定的时间来玩游戏。
此脚本是我的播放器的运行状况脚本,因为您可以看到我的面板游戏与我的UI管理器相关联:
public int curHealth;
public int maxHealth = 3;
Vector3 startPosition;
public PlayerHealth playerhealthRef;
float counter;
public Animator anima; // drag the panel in here again
private UI_ManagerScripts UIM;
private PlayerScript ps;
void Start ()
{
curHealth = maxHealth;
startPosition = transform.position;
ps = GameObject.FindGameObjectWithTag("PlayerScript").GetComponent <PlayerScript> ();
}
void Update ()
{
if (curHealth > maxHealth) {
curHealth = maxHealth;
}
if (curHealth <= 0) {
Die ();
}
}
void Awake()
{
UIM = GameObject.Find ("UIManager").GetComponent<UI_ManagerScripts> ();
}
void Die(){
if (PlayerPrefs.HasKey ("Highscore")) {
if (PlayerPrefs.GetInt ("Highscore") < ps.Score) {
PlayerPrefs.SetInt ("Highscore", ps.Score);
}
} else
{
PlayerPrefs.SetInt ("Highscore", ps.Score);
}
UIM.EnableBoolAnimator(anima);
}
public void Damage(int dmg)
{
curHealth -= dmg;
Reset();
}
void Reset ()
{
transform.position = startPosition;
GotoMouse.target = startPosition;
}
}
这是我的UImanager脚本:
public AudioClip swooshSound;
public void DisableBoolAnimator(Animator anim)
{
anim.SetBool ("IsDisplayed", false);
}
public void EnableBoolAnimator(Animator anim)
{
anim.SetBool ("IsDisplayed", true);
}
public void NavigateTo(int scene)
{
Application.LoadLevel (scene);
}
public void ExitGame()
{
Application.Quit ();
}
public void PauseGame()
{
AudioSource.PlayClipAtPoint (swooshSound, transform.position);
Time.timeScale = 0;
}
public void UnPauseGame()
{
Time.timeScale = 1;
}
}
谢谢:)
答案 0 :(得分:1)
如果您想让播放器等待一段时间,您应该将DateTime
保存到文件中。然后,当玩家尝试玩游戏时,让游戏检查日期/时间稍后是否保存到文件的日期/时间。像这样:
//For saving the file when the player loses
File.WriteAllText("path_to_file", DateTime.Now.AddHours(1).ToString());
//For checking to see if the player can play
if(Convert.ToDateTime(File.ReadAllText("path_to_file")) < DateTime.Now)
{
//Allow player to play
}
else {
//Tell player they can't play
}
然后将DateTime.Now.AddHours(1)
更改为您希望玩家等待多少小时,或者您可以将其更改为DateTime.Now.AddMinutes(1)
,以便让玩家等待多少分钟。希望这有助于:)