2017-08-08 9 views
1

私はUnityでシンプルな経験システムを持っています。ユニティで頑丈な経験システムを構築する

public void GainExperience(float experienceToAdd) // the Player gains some XP 
    { 
     currentExperience += experienceToAdd; // add the XP to the current XP 

     if (currentExperience > experienceNeeded) // enough XP to level up 
     { 
      currentExperience = currentExperience - experienceNeeded; // reset the current XP 
      experienceNeededToLevelUp *= 2; // increase the needed xp for the next level 
      currentLevel++; // increase the players level 
      skillpoints++; // gain a skillpoint 
      UpdateLevelText(); // GUI Update 
     } 

     UpdateXPBar(); // GUI Update 
    } 

だから、このコードは最善ではないと思います。私がそれほど多くのXPを手に入れたら、私は2回以上レベルアップすることができます。コードは正しくありません。

どうすれば変更できますか?

+1

なぜあなたのコードは正しくないと思いますか?同じ目的のために 'experienceNeeded'、' info.ExperienceNeeded'、 'experienceNeededToLevelUp'をなぜ使用していますか? –

+0

@AdrienLacroix申し訳ありませんが、自分のコードを編集しました。私は違いがちょうどもう1つ上のレベルを含んでいるので、うまくいかないと思う。違いが大きければ、それは3つのレベルのアップを含むことができる、彼らはそこに失われるだろう。 – Question3r

答えて

5
while (currentExperience >= experienceNeeded) 
{ 
    currentLevel++; 
    skillpoints++; 

    currentExperience -= experienceNeeded; 
    experienceNeeded *= 2; 
} 
1

カスタムプログレッションを得るには、エディタCurveFieldを使用できます。 GainExperienceで次に

enter image description here

()あなただけ(評価使用しなければならないでしょう)新しいレベルを取得するためのパラメータとしてXPで、それはあなたの更新のGUI機能を呼び出して、現在のレベルとは異なるかどう。

関連する問題