在我正在制作的游戏中,我正在使用附加到我的Player对象的脚本来计算得分和时间。我想创建一个新场景,当一个关卡被清除时,它将作为结果屏幕。
如果脚本附加到我的播放器,这意味着我的播放器也应出现在结果屏幕中,对吧?我不确定DontDestroyOnLoad实际上是如何工作的,因为我之前从未使用它。将相机移动到关卡的另一部分而不是制作全新的场景会更容易吗?
以下是我的问题的相关代码:
public GUIText scoreText;
public GUIText timerText;
private int score;
public float seconds = 0f;
public float minutes = 0f;
public float moreSeconds = 0f;
void Start()
{
score = 0;
UpdateScore ();
moreSeconds = Time.realtimeSinceStartup;
}
void Update()
{
seconds = Time.realtimeSinceStartup - moreSeconds;
if (seconds > 60)
{
seconds = 0;
moreSeconds = Time.realtimeSinceStartup;
minutes = minutes + 1;
}
if (seconds < 10)
{
timerText.text = "Time: " + (int)minutes + " : 0" + (int)seconds;
}
else
{
timerText.text = "Time: " + (int)minutes + " : " + (int)seconds;
}
}
public void AddScore(int scoreInc)
{
score += scoreInc;
UpdateScore ();
}
void UpdateScore()
{
scoreText.text = "" + score;
}
答案 0 :(得分:2)
最好的选择是在游戏动作中使用2个摄像头,在游戏动作中使用另一个摄像头,以便在任务结束时关闭游戏摄像头并打开结果摄像头
void whenLevelEnds(){
GameObject gamecamObj = GameObject.FindGameObjectsWithTag("gamecam"); //give game cam and main cam tags so we would be able to find them
GameObject menucamObj = GameObject.FindGameObjectsWithTag("menucam");
Camera gamecam = gamecamObj.GetComponent<Camera>() as Camera;
gamecam.enabled = false;
Camera menucam = menucamObj.GetComponent<Camera>() as Camera;
menucam .enabled = true;
}
您可以将游戏摄像头和菜单凸轮设置为在 cullingmask 选项上呈现不同的内容,例如将菜单凸轮设置为仅渲染GUI对象
如果你想使用 DontDestroyOnLoad 并希望摆脱显示播放器你可以把你的 图层上的播放器并告诉您的相机不要渲染相机中的图层 剔除遮罩 < / p>
您可以将 DontDestroyOnLoad 置于 Awake 中,以保护您的游戏对象不会在新场景中被销毁
void Awake () {
DontDestroyOnLoad (transform.gameObject);
}