首页 > 编程语言 > 详细

Unity3D BakeMesh 因二进制文件读写字符串的方式导致莫名bug

时间:2015-03-20 10:43:33      阅读:560      评论:0      收藏:0      [点我收藏+]

由其他人提供的插件,bake mesh 

static void writeString(BinaryWriter bw, string str, int cap)
{
var ba = new byte[cap];
var bs = System.Text.Encoding.ASCII.GetBytes(str);
Array.Copy(bs, ba, bs.Length);
bw.Write(ba);
}

直接导致了当字符串过长的时候,内容读取的缺失和后续连锁导致序列化的错误。

 

解决方案:

1.临时,扩大cap的长度。

2.动态用变长字符串长度而不是用写死的cap。

建议:这种地方应该有Assert(断言)来校验函数参数的有效性。

Unity3D BakeMesh 因二进制文件读写字符串的方式导致莫名bug

原文:http://www.cnblogs.com/tonydongyiqi/p/4352837.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!