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,读取后,再转换成枚举重新赋值。
posted @   弹吉他的小刘鸭  阅读(955)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示