我的角色射箭。她开始没有零箭头,直到她拿起箭头图标才能射击。箭头图标的值为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);
}
}
}
答案 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值。感谢大家的回复。