Привет, я новичок в этом единстве, и я делаю игру 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);
, и она работала. Я не буду удалять этот вопрос, если у кого-то еще есть такая же проблема :)
Любые ошибки в консоли после того, как вы сделаете съемку? –
Нет ошибок Нет – melissa
Какую версию Unity3D вы используете? Если старый, попробуйте 'Canvas.ForceUpdateCanvases();' сразу после 'count.text = score.ToString();' –