Unity3D-游戏序列化

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;  
        StartCoroutine(LoadGameInfo());  
    }  

    IEnumerator LoadGam
STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控 本文详细介绍了如何使用STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控。从硬件选型、连接调试到乐联网平台配置和STM32程序开发,提供了完整的实现步骤和常见问题解决方案,适合物联网入门开发者参考。 阅读详情

相关推荐

Unity3D游戏开发之游戏读/存档功能在Unity3D中的实现

大家好,我是秦元培,欢迎大家关注我的博客。近期博客的更新频率基本直降到冰点,因为这段时间实在是忙得没有时间来写博客了。今天想和大家分享的内容是RPG游戏游戏存档的实现,因为最近在做一个RPG游戏的项目,所以遇到这个问题就随时记录下来,在对知识进行总结的同时可以将这种思路或者想法分享给大家,这是一件快乐而幸运的事情。我讨厌写按部就班的技术教程,因为我觉得学习是一种自我的探索行为,如果一切都告诉你了,探索的过程便

素履独行 | 元培的个人博客 4万+

Unity3D工具类 - 读写文件

文件管理类: FileManager.csusing System; using UnityEngine; using System.Collections; using System.IO; using System.Runtime.Serialization.Formatters.Binary;namespace FrameWork { public class FileManager

sxd612612的专栏 1918

Unity中的序列化和反序列化

序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程。序列化最主要的用途就是传递对象和保存对象在Unity中保存和加载、prefab、scene、Inspector窗口、实例化预制体等都使用了序列化与反序列化。...

L的博客 7928

unity文件操作FileOperatorTool

using System.Collections; using System.Collections.Generic; using System.IO; using System; using System.Windows.Forms; using UnityEngine; namespace UIFrame { public class FileOperatorTool {...

猫叔的博客 909

Unity 序列化、保存与读取数据

什么是序列化? 序列化 把对象转化为可传输的字节序列。 反序列化 把字节序列还原为对象。 目的 以字节序列的形式,使自定义的对象持久化,这样就可以将对象跨平台地存储或传输。 玩家脚本示例 using UnityEngine; public class Player : MonoBehaviour { public static Player instance; public int health = 100; public int kill = 0; .

海月的博客 3617

Unity3D 学习笔记5 ——使用ScriptableObject进行序列化

ScriptableObject类型经常用于存储一些unity3d本身不可以打包的一些object,比如字符串,一些类对象等。用这个类型的子类型,则可以用BuildPipeline打包成assetbundle包供后续使用,非常方便。这样除了playerpref和c#文件读取外,另外的一种存取一些数据对象的方法 [csharp] view plain copy  prin

linshuhe1的专栏 8230

Unity3D——游戏序列化

说在前面     序列化是为了将对象存储(或传输)到内存、数据库或文件中,把对象状态转化为一组字节的过程。换句话说:就是如何保存对象并恢复其状态以供后续使用。现在的游戏一般都离不开序列化,特别是一些大型游戏,因为游戏本身就非常大,每次版本更新就去重装一次显然不现实。而游戏系列化就能很好的解决这个矛盾,通过比对服务器上的文本数据来判断玩家是否需要更新。 实现     以之前写过的一个简

keep studying 3748

【实战】Unity3d实战之Unity3d网络游戏实战篇(5):MySql基础以及类的序列化

Unity3d实战之Unity3d网络游戏实战篇(5):MySql基础以及类的序列化 学习书籍《Unity3d网络游戏实战》 罗培羽著 机械工业出版社 本文是作者在学习过程中遇到的认为值得记录的点,因此引用的代码等资源基本出资罗培羽老师的书籍 以下为个人的学习简记,与诸君共论 由于U3D的官方案例Tank Tutorial中对坦克的基本操作已经有了详尽的描述,因此本文着重于面...

Rioer的博客 977

Unity3D 游戏序列化及发布

在之前的作业中做了一个打飞碟的小游戏。这次作业是修改这个游戏使之通过从json文件中读取一些设置数据。事实上,在之前那个作业中,我将飞碟的数据分离出来放在DiskData这个类中。在这个类里面用数组(当时初学C#还不清楚C#中的List用法)存放每一轮有多少飞碟以及每个飞碟的颜色、大小、初始位置、发射速度和发射时间。那个代码放在下面,请不要笑。不清楚当时我是怎么想的,为什么不单独用个类将属性组织在

gunnerczh的博客 476

Unity3D学习笔记(10)—— 游戏序列化

这期内容有关游戏序列化,什么是序列化呢?额...就是游戏的内容可以输出成文本格式,或者游戏的内容可以从文本中解析获得。现在的游戏几乎离不开序列化,只要有存档机制的游戏必然会序列化,并且游戏的每次启动都会读取序列文本。另外游戏的更新也和序列化紧密相关,比如LOL、DOTA,它们每次更新的都是资源而非程序,exe文件是不会变的,它们能这么做的资本是游戏的高度序列化。         那么就拿我之前

Simba_Scorpio的专栏 2868

Unity3D动画游戏设计算法--序列化与反序列化

1.实验的目的和要求 掌握序列化与反序列化的概念,掌握BinaryFormatter类,能够编写代码实现游戏对象的序列化与反序列化。 2.实验内容 在Unity脚本中,通过Serialize与Deserialize方法,实现游戏对象的序列化与反序列化。 3.主要代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using ...

boringboo的博客 637

Unity3D游戏日记 (3):来块黄油蛋糕

前言:这一节论述制作控制道具使用的 UI 组件,并建立 UI 组件与程序后端联系的方法,以及一种游戏信息序列化与反序列化的方法。 改变道具数量 前一节我们定义了若干在游戏中出现的道具,关于道具的定义写在配置文件中,可以改动和增减道具的种类。而描述玩家持有何种道具,以及持有的数量,则需要额外的字段存放。在这个游戏中,使用道具会按照道具本身的价值将其兑换为游戏中的通货,这涉及到改变玩家持有的道具数...

Asura319的博客 1万+

序列化和反序列化Unity3D 的存储机制

序列化和反序列化Unity3D 的存储机制

weixin_46339898的博客 654

理解Unity中的序列化

【什么是序列化序列化是将对象转换为二进制流的过程,反序列化是将二进制流转换为对象的过程。序列化主要解决对象的传输问题。UnityUnity有自己的序列化机制(方法),但没有开放成API。Unity 的一些内置功能(保存和加载、Inspector 窗口、实例化和预制件)的实现需要使用序列化。 【Unity中可序列化的对象】 该对象必须是非static、非const、非readonly,且为public 或者具有SerializeField属性 可序列化的字段类型 原始数据类型(int、floa

enternalstar的博客 1万+

Serializable在C#中的作用.NET 中的对象序列化

Serializable在C#中的作用.NET 中的对象序列化简介序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。在面向对象的环境中实现序列化机制时,必须在易用性和灵活性之间进行一些权衡。只要您对此过程有足够的控制能力,就可以

670

关于Unity中类似Manager类的管理

关于Unity中类似Manager类的管理 什么是类似Manager类? 所谓类Manager类就是和Manager类相似的,拥有以下特征的类: 在Unity脚本中唯一。 在Unity脚本中经常被调用。 如果不做任何改变任由Unity其他脚本调用Manager类或者类似Manager管理类会造成不必要的性能消耗。(大量的使用脚本搜寻方法)。这时的解决方案我们可以添加一个Instance属性,让其他脚本直接调用Instance属性。 但是通常Unity中有不止一种Manager类。所以我们需要提取一个父类

BraveRunTo的博客 2677

unity序列化

序列化是将数据结构或对象转换为可存储或传输格式的过程。在Unity中,序列化通常用于将脚本组件中的变量保存到场景或预制件中,或者将数据存储在文件中以便稍后读取。Unity提供了几种序列化方式,本文将介绍其中常见的几种。

qq_20179331的博客 3732

unity3d 序列化Serializable

转: 常常看说序列化,说什么发消息要序列化,存数据也需要序列化。今天就看了看这个到底是什么东西。 是什么 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。简单的说就是把对象转换成字节然后到内存中,数据库中或者是文件中的一个过程。 过程   再通俗点讲就是学习武功时候,师傅给徒弟说武功口诀...

zebin的博客 5717

Unity3D 初识序列化相反序列化

private void SaveObject(T t) { string name = string.Format("path{0}.dat", t.ToString()); FileStream fs = new FileStream(name, FileMode.OpenOrCreate);

唐僧的专栏 678

从0开始图形学(光栅化)

从0开始图形学

A112459的专栏 2364

智慧农业蔬菜大棚解决方案.zip

弱电安防方案,有需要的可以下载!

下一篇: Unity3D-基础小知识(一)
Ro_Jack
博客等级 码龄10年 1粉丝 8原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值