IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> unity Google-protobuf简单方法与操作 -> 正文阅读

[游戏开发]unity Google-protobuf简单方法与操作

谷歌Google-protobuf源码地址。
首先我们看一下官方给出的介绍:

protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。
Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。
你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序。

Google-protobuf可以下载到protobuf代码,但后续的使用还需要我们自己去定义。
这个是我自己的测试项目。
用protobuf需要自己定义一个PB类,然后在方法中调用解析与加载的函数,进行数据的封装,可以存入文本中protobuf相比交于XML更小更快,但所显示效果并没有XML直接。

using UnityEngine;
using System.IO;
// 引用ProtoBuf-Net的功能包
using ProtoBuf;

/// <summary>
/// 用于保存Unity中Quaterion类型的PB类
/// </summary>
[ProtoContract]
public class PBN_Quaterion
{
    /// <summary>
    /// 以下是对应Quaterion的数据分量,重点是ProtoMember从1开始编号,不要重复,
    /// 并且使用getter,setter方式。
    /// </summary>
    /// <value>The x.</value>
    [ProtoMember(1)]
    public float x { get; set; }
    [ProtoMember(2)]
    public float y { get; set; }
    [ProtoMember(3)]
    public float z { get; set; }
    [ProtoMember(4)]
    public float w { get; set; }
    /// <summary>
    /// 无参构造函数,这个必须要有!
    /// </summary>
    public PBN_Quaterion()
    {
    }
    /// <summary>
    /// 方便Unity的Quaterion转化到PBN_Quaternion
    /// </summary>
    /// <param name="q">Q.</param>
    public PBN_Quaterion(Quaternion q)
    {
        this.x = q.x;
        this.y = q.y;
        this.z = q.z;
        this.w = q.w;
    }
    /// <summary>
    /// 方便转化回Unity的Quaternion
    /// </summary>
    /// <returns>The quat.</returns>
    public Quaternion toQuat()
    {
        return new Quaternion(x, y, z, w);
    }
    /// <summary>
    /// 一切为了方便吧
    /// </summary>
    /// <returns>The quat.</returns>
    /// <param name="q">Q.</param>
    public static PBN_Quaterion FromQuat(Quaternion q)
    {
        return new PBN_Quaterion(q);
    }
}

/// <summary>
/// 测试组件
/// </summary>
public class PBNTest : MonoBehaviour
{

    /// <summary>
    /// 要采样的对象
    /// </summary>
    public Transform target;
    /// <summary>
    /// 要采样的对象
    /// </summary>
    public Transform targes;
    /// <summary>
    /// 用来存取数据的绝对路径
    /// </summary>
    public string path;
    /// <summary>
    /// 存储target当前旋转
    /// </summary>
    public void saveRot()
    {
        using (Stream file = File.Create(path))
        {
            Serializer.Serialize(file, PBN_Quaterion.FromQuat(target.localRotation));
            file.Close();
        }
    }
    /// <summary>
    /// 读取存储的旋转,并设置回target
    /// </summary>
    public void loadRot()
    {
        using (Stream file = File.OpenRead(path))
        {
            PBN_Quaterion q = Serializer.Deserialize<PBN_Quaterion>(file);
            file.Close();
            targes.localRotation = q.toQuat();
        }
    }
}

这个是进行存储之后在txt中显示的数据,protobuf所显示的数据是无法通过txt直接看到的,需要通过代码的解析才能显示。

?????
  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:22:27  更:2022-01-08 14:24:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 19:51:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码