【发布时间】:2014-05-16 18:36:01
【问题描述】:
在阅读并尝试了许多不同的示例之后,我仍然被这个相当简单的问题所困扰,即在 Unity 中从一个级别到下一个级别。
我有一个 C# 脚本来处理我的关卡游戏逻辑:
首先,我设置我的关卡变量:
public class GameLogic : MonoBehaviour {
public GUIText countText;
public GUIText targetCity;
public GUIText gameOverText;
public GUIText endScoreText;
public GUIText timerText;
public Texture2D bgImage;
private int count;
public GameObject cityPrefab;
List<MyCity> mycities;
public float finalScore; // I Want this value to be available when my next scene loads
private float startTime;
在此之后,我的关卡代码执行良好,直到满足 GameOver 条件(时间到了)。然后,这段代码执行:
public void GameOver ()
{
gameOverText.text = "time is up!";
endScoreText.text = "You have found " + count.ToString() + " cities. Good wrok!";
Destroy (GameObject.FindWithTag("EmptyCity"));
Destroy (GameObject.FindWithTag("City"));
Destroy (GameObject.FindWithTag("TargetCity"));
finalScore = count; // SO AT THIS STAGE, MY FINAL SCORE IS SET AND READY TO BE PASSED TO THE NEXT SCENE. QUESTION IS HOW?
StartCoroutine(Wait());
}
IEnumerator Wait() {
yield return new WaitForSeconds(7);
Application.LoadLevel (3);
}
所以,我以公共浮动“finalScore”中的更新值结束我的关卡。到目前为止,一切都很好。现在我的问题开始了:3 级加载,2 级的所有游戏对象都被销毁。在我的游戏中,关卡 3 是一个简单的 Unity 场景,我祝贺玩家的表现。我想从我之前的场景(level2)中访问那个公共浮动 finalScore。
我知道我必须在某处使用 Dontdestroyonload。但我不知道怎么做。如何以及在哪里创建一个包含公共浮动“finalScore”的游戏对象?如何在我的新关卡中调用该游戏对象,以便我可以在我的新关卡中执行类似的操作:
public GUIText ContratsOnScore;
void SetContratsText() {
CongratsOnScore = "Congratulations, you scored" + (finalScoreFloatValue from Previous level).ToString();
【问题讨论】: