Cem*_*soy 5 unity-game-engine unityscript
在游戏中,我正在创建一个“游戏结束”场景,一旦玩家输掉游戏,该场景就会加载。在游戏过程中,分数由玩家在屏幕上的位置计数,并且随着玩家y轴位置的增加而增加。
我使用以下代码在实际玩游戏的场景上显示分数:
using UnityEngine;
using UnityEngine.UI;
public class PlayerScore : MonoBehaviour
{
public Transform player;
public Text scoreText;
// Update is called once per frame
void Update()
{
scoreText.text = player.position.y.ToString("0");
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用相同的编码在“游戏结束”屏幕上显示玩家的最终分数。我面临的问题是我无法在“游戏结束”场景中识别出该玩家,因为该玩家不是该场景中的物体或精灵。
有没有一种简单的方法可以将玩家从以前的场景归入最终(“游戏结束”)场景,以便我可以用来确定最终得分?
这是我在播放场景中尝试使用“ EndScene”游戏对象的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class EndMenu: MonoBehaviour
{
public Text scoreText;
public Transform player;
public static bool GameEnds = false;
public GameObject endMenuUI;
void OnCollisionEnter2D(Collision2D exampleCol)
{
if(exampleCol.collider.tag == "Obstacle")
{
endMenuUI.SetActive(true);
Time.timeScale = 0.0001f;
GameEnds = true;
}
}
public void Retry()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex - 1);
}
public void BackToMenu()
{
SceneManager.LoadScene("Menu");
}
public void Quit()
{
Debug.Log("Quitting game...");
Application.Quit();
}
// Update is called once per frame
void Update()
{
scoreText.text = player.position.y.ToString("0");
}
}
Run Code Online (Sandbox Code Playgroud)
您可以将其添加到播放器:
void Awake() {
DontDestroyOnLoad(transform.gameObject);
}
Run Code Online (Sandbox Code Playgroud)
您可以做其他事情,例如仅保留数据......但更简单的方法应该是这个。
请记住,玩家将保留在游戏结束屏幕中。
在我看来,最好的想法可能是在游戏场景中创建一个名为“GameOverScreen”的新游戏对象,并禁用它直到需要它为止。