2015-07-11 3 views
0

У меня есть этот скрипт, который в настоящее время работает нормально, и я хочу добавить дополнительный код, чтобы, если я ударил объект другим тегом, он вычитает 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 <"; 
     } 
    } 
} 

И я думаю, что это должно работать (обратите внимание, что я добавил код, после подсчета = кол + 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

Отсутствует закрывающая скобка. Думаю, вам следует научиться читать компиляцию r выход.

+0

Спасибо за это, теперь он работает без каких-либо ошибок. Тем не менее, он фактически учитывает только очки Pick Up, и ни одна из точек TestSolid не появляется на счетчике. Зачем? Я пометил все, и если я поставил все на Pick Up, то это будет отлично! Почему он подсчитывает только первый тег? –

+0

Хорошо. Я думаю, что здесь мы так скучаем. Начнем с того, к чему это относится? – ninjaboy

+0

Сценарий, прикрепленный к заборам и холсту. Хотите ли вы иметь ссылку OneDrive, чтобы вы могли сами увидеть мой проект? –

0

Хорошо. Очень больно говорить что-то значимое в комментариях, поэтому я стану его ответом. Я не очень люблю Unity, но похоже, что место, где вы храните свойство Count, может быть не самым лучшим. Похоже, поскольку вы расширяете поведение класса по типу, это может быть, например, временный объект, созданный каждый раз, когда какое-либо событие происходит на холсте. Я имею в виду, что вы должны знать платформу. Прочтите спецификацию. Что может решить ваш вопрос будет хранить граф в каком-то более подходящем месте. То есть в главном игровом объекте (если я правильно понял смысл того, что вы имеете в виду, как Count) код будет выглядеть следующим образом:

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

 Смежные вопросы

  • Нет связанных вопросов^_^