だから私は見下ろし型の戦車シューティングゲームを作っていて、以前よりも優れたリロードシステムを作りたいと思っています。それで、プログレスバーの王様が必要だという考えに至りました。作り方が分かったので作り始めました。問題は、それが適切に機能しないことです。上の .gif に示されているように、2 回目の撮影時にプログレス バーが下がらない。私は Unity を始めたばかりなので、まだすべてがよくわかっているわけではありません。だから私はここに来ました、誰かが助けてくれるかもしれません。
編集:私は別の問題を見つけました。おそらく、この問題が発生した理由の答えです。スクリプトを 2 回目にリロードしようとすると、"needTimer" ブール値が false になるため、false のときにプログレス バーが下がりません。新しい質問は、なぜそれが真ではなく偽になるのかということです? 私のリロードスクリプト:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Reload : MonoBehaviour {
public float ammo;
public Image progress;
public bool alreadyReloading;
public bool needTimer;
void Start () {
alreadyReloading = false;
}
IEnumerator needtimertime(){
yield return new WaitForSeconds (6.5f);
needTimer = false;
}
IEnumerator uztaisyt(){
Debug.Log ("REEELOUUUDING!");
yield return new WaitForSeconds(6.5f);
ammo += 1;
alreadyReloading = false;
}
void Update () {
if (needTimer == true) {
timer ("");
}
if (ammo < 5) {
if(alreadyReloading == false){
needTimer = true;
StartCoroutine(uztaisyt());
alreadyReloading = true;
}
}
if (progress.fillAmount <= 0) {
progress.fillAmount = 1.0f;
}
}
void timer(string tipas){
progress.fillAmount -= Time.deltaTime / 6.5f;
StartCoroutine (needtimertime ());
}
}