2015-09-28 90 views
0

我想在我的太空射擊遊戲中實現延遲拍攝效果。我發現統一文檔上的代碼,並在其他地方找到相同的代碼。但是當我這樣做時,它似乎不工作。我究竟做錯了什麼?這裏是代碼:延遲拍攝不起作用

public float fireRate = 0.25f; 
public float nextFire = 0.0f; 
// ......... 
if (Input.GetButton("Fire1") && Time.time > nextFire) 
{ 
    Instantiate(shot, shotSpawn.position, shotSpawn.rotation); 
    nextFire = Time.time + fireRate; 
} 

無論價值投入fireRate,火之間沒有任何延遲。怎麼了?

+0

你寫了'Unity3D'並設置了'unity'標籤 – Backs

+1

如果你把'fireRate'的初始值增加到'5f'之類的東西會怎麼樣? – Eraph

+1

是否可以在編輯器中設置值「fireRate」?初始化時,編輯器將覆蓋代碼中設置的任何值。 –

回答

0

代碼是完全正常的,也許值在Inspector搞砸了?它們覆蓋在腳本中設置的值。

+0

謝謝你們的答覆。我第一次注意到這一點。編輯器的fireRate值是0,我完全用代碼運行程序(我沒有碰到編輯器)。但是現在當你們建議時,我通過編輯器輸入了5的值,並且它工作。但我想用代碼來控制它。我如何防止編輯器覆蓋我的代碼值? – KasunL

+1

不公開,或使用'[HideInInspector]' – maksymiuk

+0

另一種選擇是使用'[NonSerialized]',它將變量保存在代碼中指定的值 - 我認爲這可能比'[HideInInspector] ',因爲如果你在隱藏它之前已經在檢查器中設置了一個值,那麼後者仍然會保留一個序列化的值。 [值得一讀](http://answers.unity3d.com/questions/199691/nonserialized-vs-hideininspector-question.html)。 – Serlite