2016-07-07 136 views
2

你好,我想創建像flappy鳥一樣的徽章,我把圖像放在像GameObjects這樣的UI圖像中。但它只顯示3張圖片的一張圖片,請幫助!而高分的作品,當我獲得更高的分數,但不知道爲什麼圖像不會改變:(Unity High_Score徽章C#

對不起,我的英文不好

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

public class ScoreManager : MonoBehaviour 
{ 


    private float score = 0f; 
    public Text Scoretext; 
    public MenuController deathmenu; 
    public GameObject IntroGUI, DeathGUI, Canvas; 
    public GameObject[] medals; 
    public GameObject medale; 
    void Start() 
    { 
     medale.SetActive(false); 
     foreach(GameObject m in medals) 
     { 
      m.SetActive(true); 
     } 

    } 


    void Update() 
    { 
     //handle back key in Windows Phone 
     if (Input.GetKeyDown(KeyCode.Escape)) 
      Application.Quit(); 

     if (GameStateManager.GameState == GameState.Intro) 
     {if (WasTouchedOrClicked()) 
      { 
       GameStateManager.GameState = GameState.Playing; 
       IntroGUI.SetActive(false); 
       Canvas.SetActive(true); 
      } 
     } 

     else if (GameStateManager.GameState == GameState.Playing) 
     { 


      score += Time.deltaTime; 
      Scoretext.text = ((int)score).ToString(); 

      if (PlayerPrefs.GetFloat("Highscore") < score) 
       PlayerPrefs.SetFloat("Highscore", score); 

      if(PlayerPrefs.GetFloat("Scoretext") > 0) 
      { 
       medals[0].SetActive(true); 
      } 
      else if 
       (PlayerPrefs.GetFloat("Scoretext") > 2) 
      { 
       medals[1].SetActive(true); 
      } 
      else if 
       (PlayerPrefs.GetFloat("Scoretext") > 5) 
      { 
       medals[2].SetActive(true); 
      } 

      medale.SetActive(true); 


      deathmenu.ToggleEndMenu(score); 
     } 

    } 

圖像,你可以看到我的GameObjects等它重寫

Unity

我更新的代碼,但仍不起作用

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

public class ScoreManager : MonoBehaviour 
{ 


    private float score = 0f; 
    public Text Scoretext; 
    public MenuController deathmenu; 
    public GameObject IntroGUI, DeathGUI, Canvas; 
    public GameObject[] medals; 
    public GameObject medale; 
    void Start() 
    { 
     medale.SetActive(true); 

    } 


    void Update() 
    { 
     //handle back key in Windows Phone 
     if (Input.GetKeyDown(KeyCode.Escape)) 
      Application.Quit(); 

     if (GameStateManager.GameState == GameState.Intro) 
     { 
      if (WasTouchedOrClicked()) 
      { 
       GameStateManager.GameState = GameState.Playing; 
       IntroGUI.SetActive(false); 
       Canvas.SetActive(true); 
       medale.SetActive(false); 
      } 
     } 

     else if (GameStateManager.GameState == GameState.Playing) 
     { 


      score += Time.deltaTime; 
      Scoretext.text = ((int)score).ToString(); 

      if (PlayerPrefs.GetFloat("Highscore") < score) 
       PlayerPrefs.SetFloat("Highscore", score); 

      deathmenu.ToggleEndMenu(score); 


     } 
    } 




     void FixedUpdate() 
    { 
      //just jump up and down on intro screen 
      if (GameStateManager.GameState == GameState.Intro) 
      { 

      } 
      else if 
      (GameStateManager.GameState == GameState.Playing || GameStateManager.GameState == GameState.Dead) 
      { 
      } 
     } 

     bool WasTouchedOrClicked() 
    { 
      if (Input.GetButtonUp("Jump") || Input.GetMouseButtonDown(0) || 
      (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)) 
       return true; 
      else 
       return false; 
     } 

     void OnCollisionEnter2D(Collision2D col) 
    { 
      if (GameStateManager.GameState == GameState.Playing) 
      { 
       if (col.gameObject.tag == "CARS") 
       { 
        PlayerDies(); 
       } 
      } 
     } 




     void PlayerDies() 
    { 

      GameStateManager.GameState = GameState.Dead; 




      if (PlayerPrefs.GetFloat("Scoretext") > 0) 
      { 
       medals[0].SetActive(true); 
      } 
      else if 
       (PlayerPrefs.GetFloat("Scoretext") > 2) 
      { 
       medals[1].SetActive(true); 
      } 
      else if 
       (PlayerPrefs.GetFloat("Scoretext") > 5) 
      { 
       medals[2].SetActive(true); 
      } 

     } 
    } 

回答

0

原來下面的東西不足以讓你的東西工作,你需要改變medale.SetActive(false);到medale.SetActive(true);,因爲這是您的獎牌所在的父對象。

您不會在任何位置設置Scoretext,因此請注意分數而不是scoretext。

所以,你得到:

score += Time.deltaTime; 
 
      Scoretext.text = ((int)score).ToString(); 
 

 
      if (PlayerPrefs.GetFloat("Highscore") < score) 
 
       PlayerPrefs.SetFloat("Highscore", score); 
 

 
      if(score > 0) 
 
      { 
 
       medals[0].SetActive(true); 
 
      } 
 
      else if 
 
       (score > 2) 
 
      { 
 
       medals[1].SetActive(true); 
 
      } 
 
      else if 
 
       (score > 5) 
 
      { 
 
       medals[2].SetActive(true); 
 
      }

另外,爲什麼你要爲他們活躍在開始?

+0

我在看YouTube視頻,並且正在檢查如何獲得獎牌,並且我是新手團結的,以後我會檢查你的代碼,希望它能起作用 –

+0

你的任何'else if'子句都不會執行。 –