在C#,Unity中增加弹药限制后,如何使弹药限制从其当前值减小?

时间:2017-08-09 01:39:27

标签: c# user-interface unity3d reference static

我的角色射箭。她开始没有零箭头,直到她拿起箭头图标才能射击。箭头图标的值为3.此后,她可以射箭。该代码工作正常。现在我必须通过UI文本显示使这些箭头的值减小。当拾取箭头图标时,UI文本值从0变为3,但是当我拍箭头时它不会减少。我有另一个带有脚本的游戏对象,可以检测箭头何时被拍摄。当发生这种情况时,它会告诉主脚本,嘿,箭头刚刚被拍摄。"重点是当我射箭时让文本减少。

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);
    }
}

}

3 个答案:

答案 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.
    }
}

答案 1 :(得分:0)

在SubtractPoints方法中,您将减少变量“arrowRecount”。 你想不想从“arrowCount”中减去吗?如果您使用“arrowCount”,则您的文本值应该正确更新。

答案 2 :(得分:0)

我明白了。以前,我试图让它在我的播放器脚本中从一个bool变为真时检测到我的箭头。那不行,所以我说了一下,然后做了一个空的,用标签&#34;箭头检测游戏对象。&#34;然后我在这里更新了脚本以反映这一点。昨晚我没有睡了两天就累了,所以我忘了在层次结构中加入pointsToSubtract值。感谢大家的回复。