Unity2D-关于DontDestroyOnLoad的问题
本文关键字:问题 DontDestroyOnLoad 关于 Unity2D- | 更新日期: 2023-09-27 18:28:36
在我目前制作的游戏中,我使用附加到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;
}
最好的选择是有两个摄像头,一个用于游戏中的动作,另一个用于你的结果,所以当任务结束时,你关闭游戏摄像头,打开结果摄像头
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并想摆脱显示播放器,你可以玩家在层上,并告诉您的相机不要在中渲染该层
您可以将DontDestroyOnLoad置于唤醒中,以保护您的游戏对象在新场景中不被破坏
void Awake () {
DontDestroyOnLoad (transform.gameObject);
}