2017-08-09 27 views
1

我的角色射箭。她開始沒有零箭頭,直到她拿起一個箭頭圖標才能開槍。箭頭圖標的值爲3.在此之後,她可以射箭。該代碼工作正常。現在我必須通過UI文本顯示來減少這些箭頭的數值。當拾取箭頭圖標時,UI文本值從0更改爲3,但在拍攝箭頭時它不會減少。我有另一個帶有腳本的遊戲對象,該腳本可以檢測何時拍攝箭頭。當這種情況發生時,它會告訴主要腳本:「嘿,箭頭剛剛被擊中。」當我射箭時,重點是讓文字減少。在C#中增加Unity後,如何使彈藥限制從當前值降低?

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 

public class arrowManager : MonoBehaviour { 

private Text text; 
public static int arrowCount; 
public static int arrowRecount; 
private int maxArrows = 99; 

void Start() 
{ 
    text = GetComponent<Text>(); 
    arrowCount = 0; 
} 

void Update() 
{ 
    FullQuiver(); 
    arrowCounter(); 
} 

void arrowCounter() 
{ 
    if (arrowCount < 0) { 
     arrowCount = 0; 
     text.text = "" + arrowCount; 
    } 
    if (arrowCount > 0) 
     text.text = "" + arrowCount; 
} 
public static void AddPoints(int pointsToAdd) 
{ 
    arrowCount += pointsToAdd; 
} 
public static void SubtractPoints(int pointsToSubtract) 
{ 
    arrowCount -= pointsToSubtract; 
} 

public void FullQuiver() 
{ 
    if (arrowCount >= maxArrows) 
    { 
     arrowCount = maxArrows; 
    } 
} 
} 

與腳本的遊戲對象,檢測箭頭看起來是這樣的。

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
public class arrowDetector : MonoBehaviour { 


public int pointsToSubtract; 

void OnTriggerEnter2D(Collider2D other) 
{ 
    if (other.gameObject.tag == "arrow") 
    { 
     arrowManager.SubtractPoints (pointsToSubtract); 
    } 
} 

} 
+0

你能放置一個'的debug.log()'觸發裏面的方法?只是爲了看看它是否被稱爲。 –

+0

是,調試它,我認爲,如果你開除你的箭,你需要使用光線投射來解決問題,有時會因爲你的箭頭的FPS和速度,你會想念你的觸發器。檢查你的gameobjects具有剛體組件也和對撞機... – BlackMB

回答

0

我想通了。之前,當我的玩家腳本中布爾變成真時,我試圖讓它檢測到我的箭頭。這不起作用,所以我說它擰了,只是空了,用標籤「箭頭」來檢測遊戲對象。然後我在這裏更新腳本以反映這一點。昨天晚上我沒有睡覺兩天,我累死了,所以我忘了在分層結構中加入pointsToSubtract的值。感謝大家的迴應。

0

在SubtractPoints方法中,您正在偏離變量「arrowRecount」。 難道你不想從「arrowCount」中減去?如果你使用「arrowCount」,你的文本值應該正確更新。

+0

是啊,我試過了太多種方式,但得到了同樣的結果。所以,我嘗試了不同的變量無濟於事:( –

1

原諒我,如果我誤解了,但它看起來像你對我是從錯誤的變量中減去。

因爲你是顯示「arrowCount」變量,我想這就是應從中扣除。

public static void SubtractPoints(int pointsToSubtract) 
{ 
    if (arrowCount > 0) { 

     arrowCount -= pointsToSubtract;//pointsToSubtract is an int value passed to this script from my player script whenever she shoots an arrow. 
    } 
} 
+0

好又回到了它原來的樣子(你如何在實際上輸入的),結果是一樣的,但是。 –