Unity UGUI之游戏存档方式使用.asset作为存档文件

发表于2018-08-20
评论0 4k浏览
都知道XML和JSON是游戏存档的存储的标配,那么.asset能不能作为存档存储游戏数据呢?本文就.asset能不能作为存档存储游戏数据进行探讨。

.asset不能作为游戏存档来使用。因为再次启动.exe的时候,数据会恢复初始化。

在编辑器中测试。


DataSave.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "New DataSave", menuName = "DataSave/DataSave")]
public class DataSave : ScriptableObject
{
    public string name;
}

DataSaveManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DataSaveManager : MonoBehaviour {
    public string null_str;
    public Text text;
    public InputField inputField;
    public Text text_Data;//存档DataSave的内容
    public DataSave[] dataSave;
    public DataSave select_dataSave = null;
    public int value = -1;
    #region Singleton
    public static DataSaveManager instance;
    private void Awake()
    {
        instance = this;
    }
    #endregion
    private void selectDataSave(int int_value)
    {
        select_dataSave = dataSave[int_value];
        value = int_value;
    }
    public void selectDataSave_1()
    {
        selectDataSave(0);
    }
    public void selectDataSave_2()
    {
        selectDataSave(1);
    }
    public void selectDataSave_3()
    {
        selectDataSave(2);
    }
    public void selectDataSave_4()
    {
        selectDataSave(3);
    }
    public void selectDataSave_5()
    {
        selectDataSave(4);
    }
    public void saveDataSave()//Button_Save
    {
        Debug.Log("         "+ inputField.text);
        if (inputField.text == null)
        {
            text.text = "NO input,please try again.";
        }
        else if (inputField.text != null)
        {
            text.text = inputField.text;
            dataSave[value].name = inputField.text;
        }
    }
    public void readDataSave()//Button_Read
    {
        if (select_dataSave == null
            && value == -1)
        {
            text_Data.text = "NO select DataSave,please try again";
        }
        else if (select_dataSave != null
            && value != -1)
        {
            text_Data.text = select_dataSave.name;
        }
    }
    public void changeText()//InputField
    {
        if (text != null
            && inputField != null
            )
        {
            //text.text = inputField.text;
        }
    }
} 

在编辑器中成功了,接下来在.exe中测试。
如果在编辑器中,改变DataSave_1.asset和DataSave_2.asset的组件DataSave的变量Name。
记得改变一下。

.asset不能作为游戏存档来使用。因为再次启动.exe的时候,数据会恢复初始化。
来自:https://blog.csdn.net/BuladeMian/article/details/81669085

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引