标签:
由其他人提供的插件,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