C# unity FlatBuffer序列化和反序列化代码

1 篇文章 0 订阅

using com.gameconfig;
using FlatBuffers;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class Test1 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.LogError(sizeof(int));
        Debug.LogError(sizeof(float));
        Debug.LogError(sizeof(double));
        Save();
        Load();
    }

    void Save()
    {
        // Create flatbuffer class
        FlatBufferBuilder fbb = new FlatBufferBuilder(1);
        //------------------------------------------------------

        // Create GameDataWhatever object we will store string and weapon in
        //------------------------------------------------------
        int i = 1;
        int offic = 0;
        Offset<ActivityPayRewardDaily>[] data = new Offset<ActivityPayRewardDaily>[10];
        for (i = 0; i < 10; i++)
        {
            StringOffset descN = fbb.CreateString("maomaomao");
            //Debug.LogError(descN.Value);
            StringOffset priceS = fbb.CreateString("100prices");
            //Debug.LogError(priceS.Value);
            StringOffset priceS1 = fbb.CreateString("100prices");
            //Debug.LogError(priceS1.Value);

            ActivityPayRewardDaily.StartActivityPayRewardDaily(fbb);
        ActivityPayRewardDaily.AddId(fbb, 10 * i);
        ActivityPayRewardDaily.AddDesc(fbb, descN);
        ActivityPayRewardDaily.AddPrice(fbb, descN);
        ActivityPayRewardDaily.AddPriceNow(fbb, priceS1); ;
        ActivityPayRewardDaily.AddPurchaseTimes(fbb, 1000 * i);
        ActivityPayRewardDaily.AddValueRate(fbb, descN);
        ActivityPayRewardDaily.AddName(fbb, descN);
        ActivityPayRewardDaily.AddDropId(fbb, 10);
        ActivityPayRewardDaily.AddPaymentInfoType(fbb, 10 * i);
        ActivityPayRewardDaily.AddUiPrefabId(fbb, 10 * i);
        data[i] = ActivityPayRewardDaily.EndActivityPayRewardDaily(fbb);
            //ActivityPayRewardDaily_root.FinishActivityPayRewardDailyBuffer(fbb, data[i]);
        //Debug.LogError(offset.Value);
        //    offic = offset.Value;
        }
        VectorOffset vector = ActivityPayRewardDaily_root.CreateActivityPayRewardDailysVector(fbb, data);
        ActivityPayRewardDaily_root.StartActivityPayRewardDaily_root(fbb);
        ActivityPayRewardDaily_root.AddActivityPayRewardDailys(fbb, vector); 
        offic = ActivityPayRewardDaily_root.EndActivityPayRewardDaily_root(fbb).Value;


        //ActivityPayRewardDaily_root.StartActivityPayRewardDaily_root(fbb);
        //ActivityPayRewardDaily_root.CreateActivityPayRewardDailysVector(fbb, data);
        //offic = ActivityPayRewardDaily_root.EndActivityPayRewardDaily_root(fbb).Value;

        fbb.Finish(offic);

        Debug.LogError(fbb.DataBuffer.Position + "aaa" + fbb.DataBuffer.ToFullArray().Length + ",,," + fbb.Offset);
        //File.WriteAllBytes("SAVE_FILENAME.whatever",fbb.DataBuffer.ToFullArray().Length);
        //File.WriteAllBytes("SAVE_FILENAME.whatever", fbb.DataBuffer.ToFullArray());
        MemoryStream memoryStream = fbb.DataBuffer.ToMemoryStream(fbb.DataBuffer.Position, fbb.Offset);
        //using (var ms = new MemoryStream(fbb.DataBuffer.d, fbb.DataBuffer.Position, fbb.Offset))
        {
            Debug.LogError(memoryStream.ToArray().Length);
            File.WriteAllBytes("SAVE_FILENAME.whatever", memoryStream.ToArray());
            Debug.LogError(memoryStream.ToArray().Length);
            Debug.Log("SAVED !");
        }
}
    void Load()
    {

        if (!File.Exists("SAVE_FILENAME.whatever")) throw new Exception("Load failed : 'SAVE_FILENAME.whatever' not exis, something went wrong");

        ByteBuffer bb = new ByteBuffer(File.ReadAllBytes("SAVE_FILENAME.whatever"));
        Debug.LogError(bb.Length + ",,,," + bb.Position + "ccc" + bb.GetInt(bb.Position));
        ActivityPayRewardDaily_root ttt  = ActivityPayRewardDaily_root.GetRootAsActivityPayRewardDaily_root(bb);

        Debug.LogError("maomao___a" + ttt.ActivityPayRewardDailysLength);

        for (int i = 0; i < ttt.ActivityPayRewardDailysLength; i++)
        {
            ActivityPayRewardDaily activityPayRewardDaily =(ActivityPayRewardDaily) ttt.ActivityPayRewardDailys(i);

            Debug.LogError(activityPayRewardDaily.Id);
            Debug.LogError(activityPayRewardDaily.Desc);
            Debug.LogError(activityPayRewardDaily.UiPrefabId);
        }
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值