C# Unity中asset文件与二进制文件的相互转换

前言

最近公司项目需要把Unity的Scriptable生成的asset文件,转换成二进制文件,给服务器这边用,中间也爬了不少坑,现在简要记录一下操作的方法。
楼主新手,写的如有错误,欢迎批评指正。

1.
首先是把asset文件里面的资源导出 ,一个个导出到二进制文件中,按照特定的顺序导入:
创建一个空byte数组,利用以下函数,把数据写入其中,可以考虑封装一个数据类型,写一个write操作,里面的具体操作用bitConverter实现

BitConverter.GetBytes();//可以将常规格式转换成byte

2.
再用文件流函数,创建一个二进制文件,把数据写进去

using(FileStream fs = new FileStream(path,FileMode.Create))
{
	fs.Write(data.buffer,0,data.pos);
	fs.Flush();
	fs.Close();
}

3.
利用文件流读取函数,具体与2类似

4.
利用同样是利用1的函数,将二进制转换回原来的函数,可以在buffer位置直接传要赋值的变量的引用,这样可以直接传值。

	BitConverter.ToInt32(buffer,pos);

5.
再次用2,重新存储即可

需要注意的坑

  • C#中的char是两个字节
  • 如果要把string类型转换成bytes,可以先把string转换成char[],再进行转换,我之前用的System.Text.Encoding.UTF8.GetBytes(str);这个函数,发现是个深坑,string转换成二进制再转换回来后,后面莫名其妙跟了好几个问号???
  • 如果要转枚举,可以把枚举转换成int,输入Int,读取后,再转换成枚举重新赋值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值