如何解决Unity Android IL2CPP bulid崩溃MemoryStream反序列化
我正在为Android开发休闲游戏,并将发布第一个版本。
但是我陷入了可怕的境地。
Google对64位apk的需求很大,所以我将其构建为IL2CPP。
我从Web服务器上获得了Assetbundle,其中包含一些二进制数据。
对于二进制数据,我将其转换为TextAsset。
下面是该代码。
private IEnumerator GetAssetBundle()
{
UnityWebRequest www = UnityWebRequest.Get(hNetworkManager.serverURL);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Application.Quit();
}
else
{
string assetBundleDirectory = Application.persistentDataPath + "/AssetBundle";
string serialDataPath = Application.persistentDataPath + "/SerialData";
if (!Directory.Exists(assetBundleDirectory))
Directory.CreateDirectory(assetBundleDirectory);
if (!Directory.Exists(serialDataPath))
Directory.CreateDirectory(serialDataPath);
TextAsset[] textAssets;
AssetBundle assetBundle;
hLevel.SerialData[] serialDatas;
MemoryStream memoryStream;
BinaryFormatter formatter;
var studio = Instantiate(m_thumbnailStudio);
byte[] data = new byte[www.downloadHandler.data.Length - head];
System.Array.Copy(www.downloadHandler.data,head,data,data.Length);
File.WriteAllBytes(Path.Combine(assetBundleDirectory,"levels.unity3d"),data);
assetBundle = AssetBundle.LoadFromFile(Path.Combine(assetBundleDirectory,"levels.unity3d"));
if (assetBundle == null)
{
//Debug.Log("Failed to load AssetBundle!");
yield break;
}
textAssets = assetBundle.LoadAllAssets<TextAsset>();
serialDatas = new hLevel.SerialData[textAssets.Length];
memoryStream = new MemoryStream();
formatter = new BinaryFormatter();
for (int i = 0; i < textAssets.Length; ++i)
{
memoryStream.Write(textAssets[i].bytes,textAssets[i].bytes.Length);
memoryStream.Position = 0;
serialDatas[i] = (hLevel.SerialData)formatter.Deserialize(memoryStream);
memoryStream.SetLength(0);
}
memoryStream.Close();
var lastThemeColor = hColorManager.current.curColor;
for (int i = 0; i < serialDatas.Length; ++i)
studio.SaveThumbnail(serialDatas[i]);
hColorManager.current.SetTheme(lastThemeColor,true);
hSharedData.Initialize(serialDatas);
_loading.FirstLoading();
#endregion
}
}
“ serialDatas [i] =(hLevel.SerialData)formatter.Deserialize(memoryStream);”发生this之类的异常。
我还测试了Mono版本,它工作正常。
我不知道要解决这个问题。请有人帮助我!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com(将#修改为@)