如何在Unity3D中保存和加载场景和游戏对象

时间:2019-05-13 15:06:27

标签: c# unity3d

我有一个统一的布线项目,我想保存玩家在场景中所做的所有修改。

我应该如何保存游戏?如何保存我的游戏对象?我需要序列化我的游戏对象,但我不知道该怎么做!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;

public class GameController : MonoBehaviour 
{    
    public Transform player;

    int i;

    void Start ()
    {
        i = 1; 
    }

    void Update () 
    {
        if (Input.GetKeyUp(KeyCode.Escape))     
        {   
            Pause(); 
        }

    if(player.GetComponent<FirstPersonController>().enabled == false) 
    {
        if (Input.GetKey (KeyCode.UpArrow))
        { 
            Debug.Log ("Up pressed");
            player.transform.position = new Vector3(player.transform.position.x,player.transform.position.y + 1.0f,player.transform.position.z); 
        } 
        else if (Input.GetKey (KeyCode.DownArrow))
        { 
            Debug.Log ("Down pressed");
            player.transform.position = new Vector3(player.transform.position.x,player.transform.position.y - 1.0f,player.transform.position.z); 
        }
    }
}

1 个答案:

答案 0 :(得分:0)

因此,我假设-在另一个脚本中-您将要加载一个新的场景,并且想要维护附加了GameController脚本的对象。

在这种情况下,您可以使用DontDestroyOnLoad()调用,平凡的形式是这样的(只需将Awake()函数添加到您的类中即可):

void Awake()
{
    DontDestroyOnLoad(this.gameObject);
}

这样,加载新场景时不会破坏对象。

如果您想在游戏关闭时保存数据,为了以后加载它们,请PlayerPrefs