2017-07-12 4 views
0

je le code suivantUtiliser la variable statique dans différentes classes dans l'unité

public class Score : MonoBehaviour { 

    private static int score; 
    public int sc; 

    void OnTriggerEnter2D(Collider2D col) { 
     if (col.tag == "Ball") { 
      score++; 
      sc = score; 
     } 
    } 

et c'est la classe que je utilise pour obtenir le score de la classe au-dessus

public class ScoreText : MonoBehaviour { 

    Score s = new Score(); 
    int sc; 

    void Update() { 
     sc = s.sc; 
    } 
} 

Mais pour certains raison, ma variable sc dans la classe ScoreText est toujours 0. Comment puis-je résoudre ce problème?

+0

Les deux réponses sont fausses. N'utilisez pas le mot-clé 'new' pour créer une instance de script qui hérite de' MonoBehaviour'. Voir [this] (https://stackoverflow.com/a/37399263/3785314) pour plus d'informations. – Programmer

Répondre

0

Vous pouvez obtenir la valeur d'une variable statique avec class.property

public class ScoreText : MonoBehaviour { 

    int sc =0 ; 

    void Update() { 
     sc = Score.score; 
    } 
} 

Et changer score int statique privé; pour le score statique public statique;

+0

Merci, cela a fonctionné – John

0

changement private static int score;-public static int score; et l'appeler comme ceci: Score.score = 5;

Si vous voulez l'utiliser comme propriété, vous pouvez effectuer les opérations suivantes:

private static int _score; 

public int score { 
    get{return _score;} 
    set{_score = value;} 
} 
+0

Merci pour votre réponse – John