我有这个目前工作正常的脚本,我想添加一些额外的代码,这样如果我点击一个具有不同标签的对象,它会减去300点。换句话说,这里的脚本效果很好:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class POINTS : MonoBehaviour
{
public Text countText;
public Text winText;
private Rigidbody rb;
private int count;
void Start()
{
rb = GetComponent<Rigidbody>();
count = 0;
SetCountText();
winText.text = "";
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
count = count + 300;
SetCountText();
}
}
void SetCountText()
{
countText.text = "Score: " + count.ToString();
if (count >= 10000)
{
winText.text = "Congrats! To play again press <";
}
}
}
我认为这应该有效(注意我在count = count + 300之后添加了一些代码,所以理论上它应该开始减去点
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class POINTS : MonoBehaviour
{
public Text countText;
public Text winText;
private Rigidbody rb;
private int count;
void Start()
{
rb = GetComponent<Rigidbody>();
count = 0;
SetCountText();
winText.text = "";
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
count = count + 300;
if (other.gameObject.CompareTag("TestSolid"))
{
other.gameObject.SetActive(false);
count = count - 300;
SetCountText();
}
}
void SetCountText()
{
countText.text = "Score: " + count.ToString();
if (count >= 10000)
{
winText.text = "Congrats! To play again press <";
}
}
}
但是,如果我尝试运行它,它说SetCountText还没有被声明。我如何让它工作?我对脚本非常陌生,如果这是一个愚蠢的问题,那就很抱歉。谢谢!
答案 0 :(得分:1)
缺少关闭括号。我想你应该学习如何阅读编译器输出。
答案 1 :(得分:0)
确定。在评论中说一些有意义的东西是相当痛苦的,所以我会把它作为答案。 我不是非常喜欢Unity,但它看起来像你存储Count属性的地方可能不是最好的。它看起来像是在扩展类命名行为时,例如,每次在画布上发生某些事件时创建的临时对象。我的意思是你必须了解平台。阅读规范。 什么可以解决你的问题是将Count存储在一些更合适的地方。即在主游戏对象中(如果我正确理解你所指的Count的含义) 代码看起来像:
if (other.gameObject.CompareTag("TestSolid"))
{
other.gameObject.SetActive(false);
Game.Count -= Settings.HitSolidDamage;
SetCountText();
}