码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-03-20 10:43:46      阅读:335      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!