2016-12-26 3 views
0

У меня проблема с результатом и высоким счетом, когда я играю в игру и ем монету, увеличивая счет и высокий балл, но когда я умираю и снова играю, начинаю считать счет до того, как я умру как я мертв мой счет был 3, когда я снова играть, не закрывая игру своего начала отсчета от 3 и высокого балла не экономитьоценка не сбрасывается до нуля

сценарий Score менеджера

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

public class ScoreManager : MonoBehaviour 
{ 

    public Text scoreText; 
    public Text hiScoreText; 

    public static int scoreCount; 
    public int hiScoreCount; 

    public bool scoreIncreasing; 



    // Use this for initialization 
    void Start() 
    { 

     if (PlayerPrefs.HasKey("HighScore")) 
     { 
      hiScoreCount = PlayerPrefs.GetInt("HighScore"); 
     } 
    } 

    // Update is called once per frame 
    void Update() 
    { 

     if (scoreIncreasing) 
     { 
      scoreCount = BallMain.getPoints(); 
     } 

     if (scoreCount > hiScoreCount) 
     { 
      hiScoreCount = scoreCount; 
      PlayerPrefs.SetFloat("HighScore", hiScoreCount); 
     } 

     scoreText.text = "Score: " + (scoreCount); 
     hiScoreText.text = "High Score: " + (hiScoreCount); 
    }  
} 

BallMain Script

using UnityEngine; 
using System.Collections; 

public static class BallMain { 

    private static float ballSpeed = 1.2f; 
    private static int points; 
    private static int lives = 0; 

    public enum BallStateEnum { shielded,Vulnerable}; 

    public static BallStateEnum ballState = BallStateEnum.Vulnerable; 

    public static float getBallSpeed() 
    { 
     return ballSpeed; 
    } 

    public static void IncreaseSpeed() 
    { 
     ballSpeed += 0.1f; 
    } 

    public static void IncreasePoints() 
    { 
     points++; 

    } 

    public static int getPoints() 
    { 
     return points; 
    } 

    public static int getLive() 
    { 
     return lives; 
    } 

    public static void addLife() 
    { 
     lives++; 
    } 
} 

CoinHandler Script

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

public class coinHandler : MonoBehaviour { 

    public Transform particles; 

    void OnCollisionEnter2D(Collision2D collider) 
    { 
     if (collider.gameObject.tag == "Player") 
     { 
      Instantiate(particles, new Vector3(transform.position.x, transform.position.y, -0.2f), Quaternion.identity); 
      BallMain.IncreaseSpeed(); 
      BallMain.IncreasePoints(); 
      GameObject.FindWithTag("CoinUI").GetComponent<Text>().text = BallMain.getPoints().ToString(); 
      Destroy(gameObject); 
     } 
    } 

BadCoinHandler Script

using UnityEngine; 
using UnityEngine.SceneManagement; 
using System.Collections; 

public class BadCoinHandler : MonoBehaviour { 

    public Transform particles; 

    // Use this for initialization 
    void Start() 
    { 
     Destroy(gameObject, 8f); 
    } 

    void OnCollisionEnter2D(Collision2D collider) 
    { 
     if (collider.gameObject.tag == "Player") 
     { 
      Instantiate(particles, new Vector3(transform.position.x, transform.position.y, -0.2f), Quaternion.identity); 
      Destroy(gameObject); 

      if(BallMain.getLive() == 0 && BallMain.ballState == BallMain.BallStateEnum.Vulnerable) 
      { 
       SceneManager.LoadSceneAsync(0); 
      } 
     } 
    } 
} 
+0

Как вы перезапускаете сцену? Не могли бы вы написать код. –

+0

Я пишу его «BadCoinHanlder» – naser

+0

Это не единичный текст, пожалуйста, не помещайте его, если ваш вопрос только о C# в единстве. –

ответ

1

Вы должны обнулить счет вручную. Потому что вы используете статическое ключевое слово. Поэтому создайте еще одну пустоту в BallMain и сделайте нулевую точку; Пример:

public static void ResetPoints() 
{ 
    points = 0; 
} 

И называть его бодрствующем методом по сценариюScore менеджер; Пример:

void Awake() 
{ 
    scoreCount = 0; //Also the score here 
    BallMain.ResetPoints(); 
} 

Чтобы сохранить высокий балл использовать это:

PlayerPrefs.SetInt("HighScore",scoreCount);//HighScore is key and scoreCount is the number you want to save 
PlayerPrefs.Save(); 

КСТАТИ я, что вам нужен другой вакуум, чтобы сбросить скорость мяча, а также.

+0

Спасибо, что это работает с сохранением высокой оценки? Есть идеи ? – naser

+0

Если это решение работает, нажмите кнопку «Проверить», чтобы ответить на этот вопрос. –

+0

Я не могу сказать, как сохранить мой высокий балл? – naser