Unity2D:如何锁定我的游戏一段时间,有点像糖果美眉

时间:2016-07-25 15:45:06

标签: c# unity3d

嗨我有一个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;
     }
 }

谢谢:)

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),以便让玩家等待多少分钟。希望这有助于:)