private XmlDocument LoadResource_PublicXmlDocument(ref GameResourcesNode data, Encoding code) { if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_AloneSecurity) { try { #if _Develop XmlDocument doc = new XmlDocument(); doc.Load(UniGameResources.ConnectPath(UniGameResources.DataPath, data.packageName, "/", data.path)); return(doc); #else return(xmlPublicReaderSecurity.LoadXml(UniGameResources.ConnectPath(UniGameResources.DataPath, data.packageName, "/", data.path))); #endif//_Develop } catch (System.Exception ex) { Debug.LogError(ex.ToString()); return(null); } } else if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_Mobile) { UniGameResourcesPackage package = (UniGameResourcesPackage)data.package; package.LockPackage(); #if UNITY_4_3 || UNITY_4_6 TextAsset textAsset = package.currentAssetBundle.Load(data.path, typeof(TextAsset)) as TextAsset; #else TextAsset textAsset = package.currentAssetBundle.LoadAsset(data.path, typeof(TextAsset)) as TextAsset; #endif XmlDocument doc = null; try { byte[] xmldata = textAsset.bytes; xmldata = Convert.FromBase64String(Encoding.ASCII.GetString(xmldata)); //解密数据 #if _SupportDeviceVerify xmldata = xmlFileEncipher.FileDecrypt(xmldata, true); #else xmldata = xmlFileEncipher.FileDecrypt(xmldata); #endif //_SupportDeviceVerify //MemoryStream s = new MemoryStream(xmldata); doc = new XmlDocument(); doc.LoadXml(code.GetString(xmldata)); //s.Close(); } catch (System.Exception ex) { Debug.LogError(ex.ToString()); doc = null; } UniGameResources.ReleaseOneAssets(textAsset); package.UnLockPackage(); return(doc); } return(null); }
public string LoadLanguageResource_PathDefine(string name) { GameResourcesNode data = new GameResourcesNode(); if (!FindLanguageResources(UniGameResourcesDefine.ResourcesTypeIndex_PathDefine, name, ref data)) { return(""); } return(data.path); }
public float LoadLanguageResource_Time(string name) { GameResourcesNode data = new GameResourcesNode(); if (!FindLanguageResources(UniGameResourcesDefine.ResourcesTypeIndex_TimerDefine, name, ref data)) { return(0.0f); } return(Convert.ToSingle(data.path)); }
//加载字符串 public string LoadResource_Text(string name) { GameResourcesNode data = new GameResourcesNode(); if (!FindResources(UniGameResourcesDefine.ResourcesTypeIndex_String, name, ref data)) { return(""); } return(data.path); }
public GameObject LoadLanguageResource_Prefabs(string name) { GameResourcesNode data = new GameResourcesNode(); if (!FindLanguageResources(UniGameResourcesDefine.ResourcesTypeIndex_Prefabs, name, ref data)) { return(null); } return(PrivateLoadResource(ref data, typeof(GameObject), true) as GameObject); }
public Material LoadLanguageResource_Material(string name) { GameResourcesNode data = new GameResourcesNode(); if (!FindLanguageResources(UniGameResourcesDefine.ResourcesTypeIndex_Material, name, ref data)) { return(null); } return(PrivateLoadResource(ref data, typeof(Material), false) as Material); }
public AudioClip LoadLanguageResource_AudioClip(string name) { GameResourcesNode data = new GameResourcesNode(); if (!FindLanguageResources(UniGameResourcesDefine.ResourcesTypeIndex_AudioClip, name, ref data)) { return(null); } return(PrivateLoadResource(ref data, typeof(AudioClip), false) as AudioClip); }
public Texture LoadLanguageResource_Texture(string name, Type type) { GameResourcesNode data = new GameResourcesNode(); if (!FindLanguageResources(UniGameResourcesDefine.ResourcesTypeIndex_Texture, name, ref data)) { return(null); } return(PrivateLoadResource(ref data, type, false) as Texture); }
public byte[] LoadResource_LanguageResourceByteFile(string name) { GameResourcesNode data = new GameResourcesNode(); if (!FindResources(UniGameResourcesDefine.ResourcesTypeIndex_LanguageResourceFile, name, ref data)) { return(null); } return(LoadResource_ByteFile(ref data)); }
public XmlDocument LoadResource_LanguageResourceXmlFile(string name, Encoding code) { GameResourcesNode data = new GameResourcesNode(); if (!FindResources(UniGameResourcesDefine.ResourcesTypeIndex_LanguageResourceFile, name, ref data)) { return(null); } return(LoadResource_XmlDocument(ref data, code)); }
//通用加载函数 private UnityEngine.Object PrivateLoadResource_Resource(ref GameResourcesNode data, Type type, bool isInstantiate) { try { if (isInstantiate) { return(GameObject.Instantiate(Resources.Load(data.path, type))); } else { return(Resources.Load(data.path, type)); } } catch (System.Exception ex) { Debug.LogError(ex.ToString()); } return(null); }
private byte[] LoadResource_ByteFile(ref GameResourcesNode data) { if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_AloneSecurity) { try { string path = UniGameResources.ConnectPath(UniGameResources.DataPath, data.packageName, "/", data.path); FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 4096); byte[] buffer = new byte[file.Length]; file.Read(buffer, 0, buffer.Length); file.Close(); return(buffer); } catch (System.Exception ex) { Debug.LogError(ex.ToString()); return(null); } } else if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_Mobile) { UniGameResourcesPackage package = (UniGameResourcesPackage)data.package; package.LockPackage(); #if UNITY_4_3 || UNITY_4_6 TextAsset textAsset = package.currentAssetBundle.Load(data.path, typeof(TextAsset)) as TextAsset; #else TextAsset textAsset = package.currentAssetBundle.LoadAsset(data.path, typeof(TextAsset)) as TextAsset; #endif byte[] buffer = textAsset.bytes; buffer = Convert.FromBase64String(Encoding.ASCII.GetString(buffer)); //解密数据 #if _SupportDeviceVerify buffer = xmlFileEncipher.FileDecrypt(buffer, true); #else buffer = xmlFileEncipher.FileDecrypt(buffer); #endif //_SupportDeviceVerify UniGameResources.ReleaseOneAssets(textAsset); package.UnLockPackage(); return(buffer); } return(null); }
private UnityEngine.Object PrivateLoadResource(ref GameResourcesNode data, Type type, bool isInstantiate) { //如果是系统资源包就换个函数加载 if (data.packageId == UniGameResourcesDefine.DefineSystemAssetBundleId) { return(PrivateLoadResource_Resource(ref data, type, isInstantiate)); } else if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_AloneSecurity) { try { if (isInstantiate) { #if UNITY_4_3 || UNITY_4_6 return(GameObject.Instantiate(Resources.LoadAssetAtPath(UniGameResources.ConnectPath(UniGameResources.DataPath, data.packageName, "/", data.path), type))); #else return(GameObject.Instantiate(Resources.Load(UniGameResources.ConnectPath(UniGameResources.DataPath, data.packageName, "/", data.path), type))); #endif } else { #if UNITY_4_3 || UNITY_4_6 return(Resources.LoadAssetAtPath(UniGameResources.ConnectPath(UniGameResources.DataPath, data.packageName, "/", data.path), type)); #else return(Resources.Load(UniGameResources.ConnectPath(UniGameResources.DataPath, data.packageName, "/", data.path), type)); #endif } } catch (System.Exception ex) { Debug.LogError(ex.ToString()); return(null); } } else if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_Mobile) { UnityEngine.Object ret = null; UniGameResourcesPackage package = (UniGameResourcesPackage)data.package; package.LockPackage(); try { if (isInstantiate) { #if UNITY_4_3 || UNITY_4_6 ret = GameObject.Instantiate(package.currentAssetBundle.Load(data.path, type)); #else ret = GameObject.Instantiate(package.currentAssetBundle.LoadAsset(data.path, type)); #endif } else { #if UNITY_4_3 || UNITY_4_6 ret = package.currentAssetBundle.Load(data.path, type); #else ret = package.currentAssetBundle.LoadAsset(data.path, type); #endif } } catch (System.Exception ex) { Debug.LogError(ex.ToString()); } package.UnLockPackage(); return(ret); } return(null); }
//是否支持及时下载模式 public void Initialization() { //移动资源包模式需要加载文件解密器 //移动模式必须提供资源包列表 if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_Mobile) { xmlFileEncipher = UniGameResources.AllocXmlFileEncipher(); luaScriptFileEncipher = UniGameResources.AllocLuaScriptFileEncipher(); } else if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_AloneSecurity) { xmlReaderSecurity = new FTLibrary.XML.XmlReaderSecurity(); xmlReaderSecurity.Initialization(UniGameResources.ConnectPath(UniGameResources.DataPath, UniGameResourcesDefine.DefineAssetBundleName_Config, "\\")); xmlPublicReaderSecurity = new FTLibrary.XML.XmlPublicReaderSecurity(); luaScriptReaderSecurity = new FTLibrary.XML.LuaScriptReaderSecurity(); luaScriptReaderSecurity.Initialization(UniGameResources.ConnectPath(UniGameResources.DataPath, UniGameResourcesDefine.DefineAssetBundleName_LuaScript, "\\")); //需要载入包清单来构建包表 //这里虚构一份资源进行加载 GameResourcesNode data = new GameResourcesNode(); data.packageName = UniGameResourcesDefine.DefineAssetBundleName_Config; data.path = UniGameResourcesDefine.GameAssetBundleInventoryXmlFilePath; //载入系统包清单 UniGameResources.BuildSystemResourcesPackageTable(LoadResource_XmlDocument(ref data, Encoding.Default)); } //定于到资源对象的表内以方便所有资源进行索引 Dictionary <uint, UniGameResourcesPackage> .Enumerator list = UniGameResources.systemResourcesPackageTable.GetEnumerator(); while (list.MoveNext()) { resourcesPackageTable.Add(list.Current.Value.packageId, list.Current.Value); } list.Dispose(); //开始重建资源表 //注册所有资源类型 RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_XmlFile, UniGameResourcesDefine.ResourcesTypeIndex_XmlFile); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_ResourceFile, UniGameResourcesDefine.ResourcesTypeIndex_ResourceFile); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_LanguageResourceFile, UniGameResourcesDefine.ResourcesTypeIndex_LanguageResourceFile); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_LuaScript, UniGameResourcesDefine.ResourcesTypeIndex_LuaScript); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_String, UniGameResourcesDefine.ResourcesTypeIndex_String); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_Prefabs, UniGameResourcesDefine.ResourcesTypeIndex_Prefabs); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_PublicXmlFile, UniGameResourcesDefine.ResourcesTypeIndex_PublicXmlFile); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_Texture, UniGameResourcesDefine.ResourcesTypeIndex_Texture); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_AudioClip, UniGameResourcesDefine.ResourcesTypeIndex_AudioClip); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_TimerDefine, UniGameResourcesDefine.ResourcesTypeIndex_TimerDefine); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_Material, UniGameResourcesDefine.ResourcesTypeIndex_Material); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_PathDefine, UniGameResourcesDefine.ResourcesTypeIndex_PathDefine); RegisterResourcesType(UniGameResourcesDefine.ResourcesTypeName_CarList, UniGameResourcesDefine.ResourcesTypeIndex_CarList); //一些索引资源需要手动注册以方便读取 uint configPackageId = 0; if (UniGameResources.gameResourcesWorkMode == GameResourcesWorkMode.Mode_Mobile) { GameResourcesPackage configPackage = LockPackage(UniGameResourcesDefine.DefineAssetBundleName_Config); configPackageId = configPackage.packageId; luaScriptPackage = LockPackage(UniGameResourcesDefine.DefineAssetBundleName_LuaScript) as UniGameResourcesPackage; LockPackage(UniGameResourcesDefine.DefineAssetBundleName_PublicConfig); //这里锁定就不释放了,永远驻留内存 } //注册LUA脚本读取器为从资源中加载脚本 uniResourcesLuaScriptLoader = new UniResourcesLuaScriptLoader(); //植入主清单文件 AddResourcesToTable(UniGameResourcesDefine.ResourcesTypeIndex_XmlFile, UniGameResourcesDefine.DefineResourcesName_MainResourcesFile, configPackageId, UniGameResourcesDefine.DefineAssetBundleName_Config, UniGameResourcesDefine.DefineResourcesPath_MainResourcesFile, -1); //加载这个主清单文件 XmlDocument mainXmlDoc = LoadResource_XmlFile(UniGameResourcesDefine.DefineResourcesName_MainResourcesFile); if (mainXmlDoc == null) { throw new Exception("load main xml Inventory file err!"); } //加载这个资源清单 BuildResourcesTable(mainXmlDoc); //加载其他资源清单 Dictionary <uint, GameResourcesNode> .Enumerator resourceFileList = GetResourceEnumerator(UniGameResourcesDefine.ResourcesTypeIndex_ResourceFile); while (resourceFileList.MoveNext()) { XmlDocument doc = LoadResource_ResourceXmlFile(resourceFileList.Current.Value.name); if (doc == null) { throw new Exception("load xml Inventory file err!"); } //加载这份清单 BuildResourcesTable(doc); } resourceFileList.Dispose(); //资源清单已经加载完成了 //加载语言定义 LoadLanguageDefine(); //外部定义模式不在这里加载语言定义 if (UniGameResources.gameResourcesWorkModeTwo != GameResourcesWorkModeTwo.Mode_OutGameOptions) { //加载资源模块使用的LUA脚本 uniLuaResourcesScript = new UniLuaResourcesScript(); //选择当前使用的语言 SelectCurrentLanguage(); //加载语言资源清单 LoadLanguageResourcesInventory(); } //加载当前版本信息 produceVersion.Initialization(LoadResource_PublicXmlFile(UniGameResourcesDefine.ProduceVersionFileName)); //加载资源卸载器 UniGameResources.AllocUnloadUnusedAssetsGameObject(); //加载资源下载器 UniGameResources.AllocResourcesDownLoadWorker(); }