无法在我的点计数器脚本中添加一些代码

时间:2015-07-11 20:59:01

标签: c# unity3d scripting unity3d-2dtools

我有这个目前工作正常的脚本,我想添加一些额外的代码,这样如果我点击一个具有不同标签的对象,它会减去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还没有被声明。我如何让它工作?我对脚本非常陌生,如果这是一个愚蠢的问题,那就很抱歉。谢谢!

2 个答案:

答案 0 :(得分:1)

缺少关闭括号。我想你应该学习如何阅读编译器输出。

答案 1 :(得分:0)

确定。在评论中说一些有意义的东西是相当痛苦的,所以我会把它作为答案。 我不是非常喜欢Unity,但它看起来像你存储Count属性的地方可能不是最好的。它看起来像是在扩展类命名行为时,例如,每次在画布上发生某些事件时创建的临时对象。我的意思是你必须了解平台。阅读规范。 什么可以解决你的问题是将Count存储在一些更合适的地方。即在主游戏对象中(如果我正确理解你所指的Count的含义) 代码看起来像:

if (other.gameObject.CompareTag("TestSolid"))             
{                 
    other.gameObject.SetActive(false);                 
    Game.Count -= Settings.HitSolidDamage;                 
    SetCountText();
}