原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0923/655.html
前方我们研究了AssetBundle的打包与加载,现在我们常州微信小程序开发来打听下若何在名目中凭据版本号更新内容。
非常非常紧张的一点,仔细的身边的人应当看到了在加载AssetBundle的MrcAssetManager类中,我们应用的WWW加载工具可以应用WWW.LoadFromCacheOrDownload方式,其中第一个参数是资源的url,第二个参数则是我们的要加载的版本号,我们将通过这个版本号决意是不是要从新从服务器高低载。
是以,我们需求在内陆和服务器上分别确立一个版本建设文件,内部包括了版本号、资源大小、更新光阴、内容等一系列信息,至于存储方式可以是XML、JSON等合适你的格式,这里我用XML讲解。
我们可以确立版本控制类VersionManager,在游戏首先时,读取内陆的版本号并下载服务器的版本信息。
读取内陆版本信息:
private int GetLocalVersion()
{
Debug.Log(path);
if (!File.Exists(path))
{
XmlDocument doc = new XmlDocument();
XmlElement version = doc.CreateElement("version");
version.InnerText = ";
doc.AppendChild(version);
doc.Save(path);
Debug.Log("created xmlVersion successfully!");
}
XmlDocument docRead = new XmlDocument();
docRead.Load(path);
XmlElement versionRead = docRead.SelectSingleNode("version") as XmlElement;
return int.Parse(versionRead.InnerText);
}
下载读取常州网站开发建设服务器的版本信息,要是不一致更新内陆资源和版本信息:
private void CheckVersion()
{
string url = "http://.../UnityFiles/AssetBundlesForBlog/LOUnityAssetversion.xml";
StartCoroutine(GetServerVersion(url));
}
private IEnumerator GetServerVersion(string url)
{
WWW www = new WWW(url);
yield return www;
XmlDocument doc = new XmlDocument();
doc.InnerXml = www.text;
XmlElement version = doc.SelectSingleNode("version") as XmlElement;
ServerVersion = int.Parse(version.InnerText);
LocalVersion = GetLocalVersion();
if (LocalVersion < ServerVersion)
{
Debug.Log("need update");
//更新内陆版本信息
OverrideLocalVersion();
}
TestScript.DefaultTest.StartLoad();
}
private void OverrideLocalVersion()
{
XmlDocument docWrite = new XmlDocument();
docWrite.Load(path);
XmlElement versionWrite = docWrite.SelectSingleNode("version") as XmlElement;
versionWrite.InnerText = ServerVersion.ToString();
docWrite.Save(path);
}
非常后,将AssetBundle经管类MrCAssetManager中WWW工具的版本号改成应用我们确当前版本号,便啦。这样,当我们游戏开发运营更新了服务器上的AssetBundle资源后,只要点窜下服务器上的版本号,客户端就会由于对比版本不一致而从新下载,而要是一致,就会应用存在内陆的AssetBundle资源而不从新下载。
上篇:上一篇:Cocos2Dx 少许残存的API
下篇:下一篇:Unity5.3+ 在UGUI 上应用 粒子特效