您的位置:首页 > 移动开发 > Unity3D

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

2015-03-20 09:28 337 查看
由其他人提供的插件,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(断言)来校验函数参数的有效性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐