我试过制作3星级奖励系统,我基本做到了。系统正常工作,如果我通过7级以下的级别,我赢得3星级。Unity 3D 3星奖励系统逻辑(c#)
(int step <7) // 3 Star
(int step >7 && <12) // 2 star
(int step >12) // 1 star
所以,这是问题所在。例如,我在lvl 1中获得了3星。后来我再次打了lvl 1,并通过了“1级”> 12步。代码将星星更改为1星。我想如果我在3星之前赢得了不显示2或1星。如果我在没有显示1星之前赢得2星。
我的c#技能不足以编写代码这个状态。
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步骤中的电平I赚取LVL 1为3星级正在发生 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#和英语。但你确实帮助了我。它的工作额外 ı从你学到简单。谢谢。 –