2016-09-03 5 views
1

LevelChange関数が呼び出されるたびに変数levelnameに1を追加しようとしています。ただし、呼び出されるたびに、コードの最初に設定された値と同じように値が1にリセットされます。私はC++に慣れていて、とても混乱しています。このコードは、Iiveがこれを解決するために数多くの方法を試したために、少しばかりです。どんな助けもありがとう。 何らかの理由で私はこの行をコードブロックに入れることができないので、ブラケットがありません。++オペレータに関する問題

+0

ここで、このクラスのインスタンスを保持しますか? –

+0

@VisualVincentイベントハンドラオブジェクトのコンポーネントです。それはあるレベルから別のレベルへの切り替えになると機能しますが、その値は2回以上上がることはありません。それはあなたの質問に答えますか?あなたは何を求めているのですか? – user3103529

+0

新しいレベルに進むたびに新しいインスタンスが作成される可能性があります。他人のアドバイスをとり、変数を静的にします。 –

答えて

2

使用public static int levelname = 1; 代わりにint levelname=1は、インスタンスのプロパティです。クラスNextLevelの各インスタンスには、この独自の値があります。もしあれば、すべての時間がNextLevelの新しいインスタンスを作成し、静的プロパティにlevelnameを切り替えたり、常にクラスNextLevelの1つのインスタンスを使用することができます。1.

から開始し、常にUpdate数を呼び出します。

+0

感謝の代わりにアップしてくださいこれは、他の –

+1

あなたが実際には、エンジニアリングソフトウェアで静的またはグローバルを使用すべきではありません答えを助ける答えをアップ。あなたの基本的なソフトウェアエンジニアリングスキルを構築してみてください! – Fattie

4

levelname

public class NextLevel : MonoBehaviour { 
    int levelname = 1; 
    int newlevelname; 
    string levelnameS; 

    void LevelChange() 
    { 
     levelname++; 
     newlevelname = levelname; 
     string levelnameS = newlevelname.ToString(); //Converts newlevelname which is an int value to a string 
     Debug.Log(levelnameS); //prints to the console 

     SceneManager.LoadScene(levelnameS); //changes scene based on the level name. In this case its a number because thats what the levels are named. 
     Debug.Log(levelname);  
    } 

    void Update() 
    {  
     if (Input.GetKeyDown(KeyCode.Return)) 
     {    
      LevelChange(); //calls the level change function     
     } 
    } 
} 
+0

私はこの問題を解決しましたが、将来的にはNextLevelのインスタンスを1つだけ使用するとどうなりますか? – user3103529

+0

@ user3103529オブジェクト・タイプ 'NextLevel'をどのように作成して使用するのか分かりませんが、あまりにも少ないコード例です。しかし、静的メンバとインスタンスメンバ間の[diferences](https://msdn.microsoft.com/en-us/library/aa645629(v = vs.71).aspx)を読むと、静的メンバを使用するといくつかの結果が生じます。静的メンバークラスの複数のインスタンスが必要な場合は、各インスタンスごとに常に同じ値を持ちます。 – BWA