2016-07-07 10 views
2

こんにちは私は、ぼんやりした鳥のようにバッジを作成したい、私はGameObjectsのようなUIイメージにイメージを置く。しかし、それは私に3つの画像の1つだけの画像を表示してください助けてください!そして、ハイスコアは、私はより高いスコアを得るが、画像は変更されませんなぜ:(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); 
     } 

    } 

についてあなたは私のゲームオブジェクト等を見ることができるかわからないときに書き換えて、作品

Unity

私は、コードが、まだdoesntの仕事を更新

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);これはあなたのメダルが入っている親オブジェクトです。

スコアテキストをどこにも設定しないので、スコアテキストの代わりにスコアを見てください。

だから、あなたが得る:

また

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

私はあなたのビデオを見ていて、その得点を得る方法をチェックしていました。私は初心者です。私はあなたのコードを後でチェックします。 –

+0

'else if'節は実行されません。 –