Я пробовал сделать систему вознаграждения 3 звезды, и я сделал это в основном. Система работает нормально, если я пройду уровень ниже 7 шагов, я зарабатываю 3 звезды.Unity 3D 3 Star Reward System Logic (C#)
(int step <7) // 3 Star
(int step >7 && <12) // 2 star
(int step >12) // 1 star
Итак, вот в чем проблема. Например, я заработал 3 звезды в lvl 1. Позже я снова сыграл lvl 1, и я прошел шаг «1-го уровня»> 12. Код меняет звезды на 1 звезда. Я хочу, если бы я заработал до 3-х звезд, не показываю 2 или 1 звезду. Если я заработал 2 звезды, не покажу 1 звезду.
My C# skill недостаточно для написания кода для кодирования этого состояния.
LEVELS Class
public Sprite Star1;
public Sprite Star2;
public Sprite Star3;
public Image[] Stars;
void Start()
{
//PlayerPrefs.SetInt("Level 1",1);
if (PlayerPrefs.GetInt("Level 1") ==1)
{
LevelNumbers[0].text = "1";
PlayerPrefs.SetInt("Level 1",1);
if (PlayerPrefs.GetInt("L1St")==1)
{
Stars[0].sprite = Star1;
}
else if (PlayerPrefs.GetInt("L1St")==2)
{
Stars[0].sprite = Star2;
}
else if (PlayerPrefs.GetInt("L1St")==3)
{
Stars[0].sprite = Star3;
}
}
Вот вторая часть:
void OnCollisionEnter(Collision coll)
{
if (man1 == false & man2 == false &(coll.gameObject.tag=="Finish"))
{
// Application.LoadLevel("Levels");
PlayerPrefs.SetInt("Level 1",1);
if(Application.loadedLevelName == "Level1")
{
PlayerPrefs.SetInt("Level 2",1);
if(step >12)
{
if (PlayerPrefs.GetInt("L1St") ==0)
{
PlayerPrefs.SetInt("L1St",1); /// Do 1 Star
}
}
if(step >7 && step <12)
{
if (PlayerPrefs.GetInt("L1St") ==0 || PlayerPrefs.GetInt("L1St")==1)
{
PlayerPrefs.SetInt("L1St",2); /// Do 2 Star
}
}
if(step <=7)
{
if (PlayerPrefs.GetInt("L1St") ==0||PlayerPrefs.GetInt("L1St") ==1 || PlayerPrefs.GetInt("L1St") ==2)
{
PlayerPrefs.SetInt("L1St",3); /// Do 3 Star
}
}
Application.LoadLevel("levels");
}
Также я изменил вторую часть (в нижней части), когда я прохожу уровень в рамках 7 шага я заработать 3 звезды в лвл 1. происходит L1St = 3 and Level1StarCounter = 4.
Но позже я снова выполнил уровень 1 за 7 шагов Level1StarCounter Не меняется, но L1St собирается . Я не знаю, как это можно сделать.
void OnCollisionEnter(Collision coll)
{
if (man1 == false & man2 == false &(coll.gameObject.tag=="Finish"))
{
// Application.LoadLevel("Levels");
PlayerPrefs.SetInt("Level 1",1);
if(Application.loadedLevelName == "Level1")
{
PlayerPrefs.SetInt("Level 2",1);
if(step >12)
{
if (PlayerPrefs.GetInt("LV1StarCounter")<= PlayerPrefs.GetInt("L1St"))
{
PlayerPrefs.SetInt("L1St",1);
PlayerPrefs.SetInt("LV1StarCounter",2);
}
}
else if(step >7 && step <12)
{
if (PlayerPrefs.GetInt("LV1StarCounter")<= PlayerPrefs.GetInt("L1St"))
{
PlayerPrefs.SetInt("L1St",2);
PlayerPrefs.SetInt("LV1StarCounter",3);
}
}
else if(step <=7)
{
if (PlayerPrefs.GetInt("LV1StarCounter")<= PlayerPrefs.GetInt("L1St"))
{
PlayerPrefs.SetInt("L1St",3);
PlayerPrefs.SetInt("LV1StarCounter",4);
}
}
Application.LoadLevel("levels");
}
Maximilian Gerhardt. Я не очень хорош на C#, а также на английском. Но ты помог мне. Он работает дополнительно ı узнал от вас простоту. Спасибо. –