我想用一個協程來讓玩家在拍攝新子彈之前等一會兒,但它永遠不會超過收益率。代碼如下Unity C#收益率返回新WaitForSeconds正在停止協程
protected override void Start() {
base.Start();
animator = GetComponent<Animator>();
score = GameManager.instance.playerScore;
playerLives = GameManager.instance.playerLife;
}
void Update(){
int horizontal = (int)Input.GetAxisRaw("Horizontal");
AttemptMove (horizontal, 0);
if (Input.GetKeyDown ("space")) {
if(canShoot){
Vector3 shootPosition = transform.position + new Vector3 (0, 0.5f, 0);
Instantiate (bullet, shootPosition, Quaternion.identity);
StartCoroutine(Shoot());
}
}
}
IEnumerator Shoot(){
Debug.Log("Start");
canShoot=false;
yield return new WaitForSeconds (shootingTimeDelay);
canShoot=true;
Debug.Log("End");
}
shootingTimeDelay設置爲1.1f。我並沒有在任何地方銷燬我的gameObject,並且它可以在我的項目中的其他腳本中正常工作。
它從不打印結束。我沒有得到什麼錯
'Time.timeScale'大於'0'? –
它等於1 –
這是c#上帝告訴你不使用協程 – MickyD