Unity2D - 关于DontDestroyOnLoad的问题

时间:2014-11-01 05:24:05

标签: c# unity3d

在我正在制作的游戏中,我正在使用附加到我的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;
}

1 个答案:

答案 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);
}