Unity3D:获得两个或更多个成就问题

问题描述 投票:0回答:1

我使用此video创建了自己的成就系统,但是如果用户获得两个或更多成就,我遇到了一个问题,例如,我的成就之一是杀死10个敌人,而我的成就之一正在捡起30个硬币。但是,我确保仅在游戏结束时才提供成就,以避免出现问题,因此我意识到,如果用户获得了两个或两个以上的成就,则我的所有成就面板将同时激活,这意味着用户只能看到一个面板。如果获得两个或更多成就,是否有办法使每个成就面板显示在另一个面板之后。

这是我的成就脚本:

public class AchievementScript : MonoBehaviour
{
private int Defeats_10;
public int Gain30Treasure;
public GameObject AchievePanel, AchievePanel2;
public Text achieveTitle, achieveTitle2;
public Text achieveText, achieveText2;
public Animator anim, anim2;


void Update()
{
Defeats_10 = PlayerPrefs.GetInt("10Enemies");
Gain30Treasure = PlayerPrefs.GetInt("treasure");

if (GameController.killAmount >= 10 && Defeats_10 != 10) //50
{
    StartCoroutine(Achieved50Kills());
}
if (GameController.Coin >= 30 && Gain500Treasure != 30)
{
StartCoroutine(Achieved30Coins());
}
}

IEnumerator Achieved50Kills()
{
AchievePanel.SetActive(true);
Defeats_10 = 10;
PlayerPrefs.SetInt("10Enemies", Defeats_10);
achieveTitle.text = "10 Enemies Defeated";
achieveText.text = "You defeated 10 Enemies in a single game";
anim.SetBool("slideUp", true);
yield return new WaitForSeconds(3);
anim.SetBool("slideDown", true);
yield return new WaitForSeconds(1);
AchievePanel.SetActive(false);
anim.SetBool("slideUp", false);
anim.SetBool("slideDown", false);     
}


IEnumerator Achieved30Coins ()
{
AchievePanel2.SetActive(true);
Gain30Treasure = 30;
PlayerPrefs.SetInt("treasure", Gain30Treasure);
achieveTitle2.text = "30 coins";
achieveText2.text = "You gained 30 coins in a single game";
yield return new WaitForSeconds(1);
anim2.SetBool("slideUp", true);
yield return new WaitForSeconds(3);
anim2.SetBool("slideDown", true);
yield return new WaitForSeconds(1);
AchievePanel2.SetActive(false);
anim2.SetBool("slideUp", false);
anim2.SetBool("slideDown", false); 
}

谢谢你!我非常感谢您的帮助!

unity3d
1个回答
0
投票

如果面板的高度相同,请为显示的面板设置一个计数器,然后将其乘以新面板的高度。例如:

© www.soinside.com 2019 - 2024. All rights reserved.