[Unity][EXE][存档][UGUI]最简单的游戏存档方式使用.asset作为存档文件

都知道 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的时候,数据会恢复初始化。

相关文章:

1.[Unity][UGUI]InputField回车输入显示

2.

3.

4.

5.

猜你喜欢

转载自blog.csdn.net/BuladeMian/article/details/81669085