2016-01-19 3 views
2

Привет, я новичок в этом единстве, и я делаю игру 2d проблемой. Я сталкиваюсь с отображением правильного текста на экране, например, у меня есть счет score для отслеживания оценки а затем я показываю этот текст через count.text, ОДНАКО проблема в том, что когда игра начинается, текст на экране отображает «0», score равно 0, затем я снимаю яблоко, а score становится 1, а также также становится 1, но текст по-прежнему 0 на экране, когда я снимаю другую стрелку, score и count.text показывает значение 2, однако на экране отображается 1 и так далее. Я последовал единственному учебному пособию по рулону. Вот мой кодНеверный текст на экране

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class arrowcounttutorial : MonoBehaviour { 

    public GameObject Arrow; 
    public GameObject apple; 
    public int score = 0; 
    public Text count; 

    // Use this for initialization 
    void Start() { 
     this.gameObject.GetComponent<Rigidbody2D>().AddForce (transform.right*1500.0f); 
     //score = 0; 
     //showcounttext(); 
     count.text = score.ToString(); 
    } 


    // Update is called once per frame 
    void Update() { 
     Vector3 diff = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position; 
     diff.Normalize(); 

     float rot_z = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg; 
     transform.rotation = Quaternion.Euler(0f, 0f, rot_z - 0); 

     if (Input.GetMouseButtonUp (0)) { 


      GameObject bullet_new; 

      bullet_new = Instantiate (Arrow,new Vector2 (-0.23f, -3.78f), Quaternion.identity) as GameObject; 
      RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition),Vector2.zero); 
      if (hit.collider!= null) { 

       LeanTween.move(bullet_new, hit.collider.transform.localPosition, 1); 
       if(hit.collider.tag == "fruit") 
       {   
        score++; 
        //showcounttext(); 
        count.text = score.ToString(); 
        print(count.text); 
        Destroy(hit.collider.gameObject,1); 
        Destroy(bullet_new,1); 


       } 

      } 


     } 
    } 
/* 
    void showcounttext(){ 

     count.text = score.ToString(); 
    } 
    */ 
} 

Кроме того, если я инициализировать счет в аннулируются начать текст остается 0 через вне уровня, даже если оценка и count.text являются 1,2,3,4,5 так далее. Что я могу сделать?

UPDATE Я не знаю, как это работает, но я назвал функцию Invoke Invoke ("showcounttext",1);, и она работала. Я не буду удалять этот вопрос, если у кого-то еще есть такая же проблема :)

+0

Любые ошибки в консоли после того, как вы сделаете съемку? –

+0

Нет ошибок Нет – melissa

+0

Какую версию Unity3D вы используете? Если старый, попробуйте 'Canvas.ForceUpdateCanvases();' сразу после 'count.text = score.ToString();' –

ответ

2

Я вижу ваш ответ, хорошо, что он исправлен, но это не лучшее решение.

До версии Unity3D версии 5.3.1p3 у этого двигателя были проблемы с обновлением холстов, а иногда содержимое пользовательского интерфейса исчезало. Вы не сказали версию вы используете, но я почти уверен, что в данном случае это помогло бы призывая

Canvas.ForceUpdateCanvases(); 

В своем коде он должен выглядеть так:

if(hit.collider.tag == "fruit") 
       {   
        score++; 
        //showcounttext(); 
        count.text = score.ToString(); 
        print(count.text); 
        Destroy(hit.collider.gameObject,1); 
        Destroy(bullet_new,1); 

        Canvas.ForceUpdateCanvases(); 
       } 

Попробуйте это, или обновить Unity3D.

+0

Это интересно, однако я ничего об этом не замечаю в [примечаниях к выпуску] (https://unity3d.com/unity/qa/patch-releases). Это единственная проблема, связанная с пользовательским интерфейсом: (741751) - UI: Удалено оставшееся использование нескольких систем отображения. – trojanfoe

+0

Извините, я не был достаточно точным. Говоря до 5.3.1p3, я имел в виду все версии и исправления, по крайней мере, до версии 5.2. У меня была аналогичная проблема в версии 5.2, как в вопросе, так что это моя ошибка. –

+0

OK, понимается. – trojanfoe

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