Unity3D-游戏序列化

序列化 就是把一个内存对象变为与地址无关的可传输的数据格式,通常是文本格式;反序列化反之。一般情况下,对象序列化指把一个对象用 XML,YAML 或 json 文本表示。 尽管 Unity 场景文件是 yaml 格式的,但并没有提供运行时内置支持。Unity 已内置 json 支持。
现在我要对我之前写的飞碟游戏进行初步的序列化。
实现序列化后,游戏版本信息以及每个关卡的规则信息都选择json文本保存,这里,我把它们保存在游戏根目录下的Data文件夹中:
这里写图片描述
这里写图片描述这里写图片描述
启动游戏的效果:
这里写图片描述
接下来就是代码的部分了。
FileManager:
在Scripits文件夹下新建FileManager.cs,它主要有两个工作:1、读取游戏版本信息并返回json;2、在游戏中读取关卡信息并返回json。
代码如下:

using UnityEngine;  
using System.Collections;  
using Com.Mygame;  

public class FileManager : MonoBehaviour {  
    public string url;

    SceneContriller scene = SceneContriller.GetInstance();  

    void Awake()  
    {  
        scene.setFileManager(this); // 注册到场景控制器  
        LoadGameInfoJson("game_info.json"); // 获取游戏版本等信息
    }  

    // 输入关卡文件名,启动协程读取文件  
    public void loadLevelJson(string name)  
    {  
        url = "file://" + Application.dataPath + "/Data/" + name;
        StartCoroutine(LoadLevel());  
    }  

    IEnumerator LoadLevel()  
    {  
        if (url.Length > 0)  
        {  
            WWW www = new WWW(url);  
            yield return www;  
            if (!string.IsNullOrEmpty(www.error))  
                Debug.Log(www.error);  
            else  
                scene.stageLevel(www.text.ToString());  // 返回json字符串给scene  
        }  
    }  

    // 输入游戏信息文件名,启动协程读取文件  
    public void LoadGameInfoJson(string name)  
    {  
        url = "file://" + Application.dataPath + "/Data/" + name;  
        StartC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值