unity2019通过文件头特征判断是不是ab包
时间: 2023-08-07 16:04:36 浏览: 221
Unity 2019 改变了 AssetBundle 包的文件头信息,因此在 Unity 2019 中,判断 AssetBundle 包是否有效需要使用新的方法。Unity 2019 中 AssetBundle 包的文件头信息是由 29 个字节组成的,其中前 20 个字节是固定的,后 9 个字节是可变的。
因此,可以通过以下代码来判断一个文件是否为 Unity 2019 中的 AssetBundle 包:
```csharp
string filePath = "路径/文件名";
byte[] header = new byte[29];
using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
fs.Read(header, 0, 29);
}
if (header[0] == 0x89 && header[1] == 0x41 && header[2] == 0x53 && header[3] == 0x42 && header[4] == 0x0d && header[5] == 0x0a && header[6] == 0x1a && header[7] == 0x0a && header[8] == 0x00 && header[9] == 0x00 && header[10] == 0x00 && header[11] == 0x00 && header[12] == 0x00 && header[13] == 0x00 && header[14] == 0x00 && header[15] == 0x00 && header[16] == 0x08 && header[17] == 0x00 && header[18] == 0x00 && header[19] == 0x00)
{
int version = BitConverter.ToInt32(header, 20);
int minimumStreamedBytes = BitConverter.ToInt32(header, 24);
// 是 Unity 2019 中的 AssetBundle 包
}
else
{
// 不是 AssetBundle 包或者不是 Unity 2019 中的 AssetBundle 包
}
```
需要注意的是,这种方法也有一定的限制,因为一些非 AssetBundle 包的文件也可能有相同的文件头信息,所以只能在一定程度上判断文件是否为 AssetBundle 包。
阅读全文