【发布时间】:2016-06-27 15:09:04
【问题描述】:
我的当前分数和最高分数不会显示在 Android 设备中
DeathGUI 菜单控制器
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class MenuController : MonoBehaviour {
public Text scoreText;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void StartGame()
{
SceneManager.LoadScene("Name is Hidden but it is Correct");
}
public void RestartGame()
{
if (GameStateManager.GameState == GameState.Dead)
{
GameStateManager.GameState = GameState.Intro;
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
public void ToggleEndMenu(float score)
{
gameObject.SetActive(true);
scoreText.text = ((int)score).ToString("0");
}
}
玩家评分管理器
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class ScoreManager : MonoBehaviour
{
private float score = 0f;
public Text Scoretext;
public MenuController deathmenu;
void Start()
{
}
void Update()
{
score += Time.deltaTime;
Scoretext.text = ((int)score).ToString();
}
public void onDeath()
{
if(PlayerPrefs.GetFloat("Highscore") < score)
PlayerPrefs.SetFloat("Highscore", score);
deathmenu.ToggleEndMenu(score);
}
}
Player Script
void Update()
{
//handle back key in Windows Phone
if (Input.GetKeyDown(KeyCode.Escape))
Application.Quit();
if (GameStateManager.GameState == GameState.Intro)
{
MovePlayerOnYAxis();
if (WasTouchedOrClicked())
{
IntroGUI.SetActive(false);
GameStateManager.GameState = GameState.Playing;
}
}
else if (GameStateManager.GameState == GameState.Playing)
{
MovePlayerOnYAxis();
Canvas.SetActive(true);
DeathGUI.SetActive(false);
}
score += Time.deltaTime;
Scoretext.text = ((int)score).ToString();
}
void PlayerDies()
{
GameStateManager.GameState = GameState.Dead;
DeathGUI.SetActive(true);
Canvas.SetActive(false);
GetComponent<AudioSource>().PlayOneShot(DeathAudioClip);
if (PlayerPrefs.GetFloat("Highscore") < score)
PlayerPrefs.SetFloat("Highscore", score);
deathmenu.ToggleEndMenu(score);
}
}
高分脚本
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class HighScoreText : MonoBehaviour {
public Text HighscoreText;
// Use this for initialization
void Start () {
HighscoreText.text = ((int)PlayerPrefs.GetFloat("Highscore")).ToString();
}
// Update is called once per frame
void Update () {
}
}
【问题讨论】:
-
你在这里展示了很多代码。您在诊断问题方面走了多远?
-
您的代码从不为 highScore.text 设置值,您甚至没有变量来处理 Text(高分)对象。
-
@JonSkeet 我认为 GameStates 有问题,但不知道如何解决
-
@primaëlquemerais Highscore.txt 在 DeathGUI 中,HighscoreText 脚本和 Highscore.txt '使用 UnityEngine;使用 System.Collections;使用 UnityEngine.UI;公共类 HighScoreText : MonoBehaviour { 公共文本 HighScoreText; // 用于初始化 void Start () { HighscoreText.text = ((int)PlayerPrefs.GetFloat("Highscore")).ToString(); } // 每帧调用一次更新 void Update () { } }
-
使用调试器。单步执行您的代码。报告您在相关代码中观察到的内容。 Stack Overflow 不能替代调试。如果您不熟悉 C# 和 Unity,我个人建议您分别学习它们 - 但无论哪种方式,您都应该绝对花时间学习调试和其他诊断技术。
标签: c# android unity3d unityscript unity5