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,读取后,再转换成枚举重新赋值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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搭建本