#c# #unity3d
#c# #unity3d
Вопрос:
Я не могу отобразить результат на своей winPanel в canvas.
Кодирование баллов и пользовательский интерфейс, которые отображаются на игровой сцене:-
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class getscore : MonoBehaviour
{
public GameObject scoretext;
private void Start()
{
scoretext.GetComponent<Text>().text = "0";
}
public void setscore(float scoretoadd)
{
float currentscore = float.Parse(scoretext.GetComponent<Text>().text);
float newscore = currentscore scoretoadd;
scoretext.GetComponent<Text>().text = newscore.ToString("F0");
}
}
Затем я помещаю ту же кодировку в холст, где она должна отображать результат на моем холсте winPanel:-
Вывод, где оценка отображается только на игровой сцене, но не отображается на моей winPanel в canvas:-
Проблема сейчас в том, что… почему оценка не отображалась на моем холсте winPanel?
Комментарии:
1. Трудно сказать, поскольку вы не предоставили достаточно информации. Пожалуйста, также поделитесь кодом, вызывающим функцию ‘setscore’. Держу пари, что ваша переменная ‘newscore’ вычисляется неправильно. Его значение остается 0.
2. Использует ли ваша winPanel
getscore
скрипт?3. попробуйте сначала отладить саму оценку Debug. Войдите в систему (newscrore) и посмотрите, каковы результаты. 2-й, ты уверен, что вызвал функцию setscore(), когда игра закончится?
4. Бишок: Я уже дал вам код setscore(); @Haytam да…
5. @OmarVector я не уверен, хммм …. ты можешь мне помочь, Омар?
Ответ №1:
Я рекомендую сохранять оценку в статическом формате с плавающей запятой, чтобы это было одно и то же число, независимо от того, откуда вы к нему обращаетесь:
public class getscore : MonoBehaviour
{
public GameObject scoretext;
public static float score = 0;
private void Start()
{
setscore(0);
}
public void setscore(float scoretoadd)
{
score = scoretoadd;
scoretext.GetComponent<Text>().text = score.ToString("F0");
}
}
Не забудьте снова установить счет на 0 при перезагрузке уровня getscore.score = 0