ResourceManager(二)—— AssetInfoManager
来源:互联网 发布:图片纠偏软件 编辑:程序博客网 时间:2024/06/05 17:57
目录为:Assets/Scripts/ResourceManager/AssetInfoManager.cs
using System;using System.Xml;using System.IO;using System.Collections;using System.Collections.Generic;using UnityEngine;//这里其实是和打包的时候记录的xml信息对应的//AssetInfo.bytes这个文件public class AssetInfo{ public string mName; //asset名称 public int mIndex; //asset索引 public int mLevel; //asset层级 public int mSize; //assetbundle所占大小 public List<int> mDependencies = new List<int> (); //asset关联的asset索引 //构造函数 public AssetInfo() { mSize = 0; } //解析AssetInfo信息 public void Import(XmlElement element) { mName = element.GetAttribute ("name"); mIndex = Int32.Parse (element.GetAttribute ("index")); mLevel = Int32.Parse (element.GetAttribute ("level")); //这里面其实存的是dependency的index,用逗号隔开的 //看一下AssetInfo.bytes就明白了 string depencyStr = element.GetAttribute ("depency"); if (depencyStr != "") { //分开 string[] depencyStrList = depencyStr.Split (','); //访问每一个depency的index,并添加 for (int i = 0; i < depencyStrList.Length; i++) { int depencyIndex = Int32.Parse (depencyStrList [i]); mDependencies.Add (depencyIndex); } } mSize = Int32.Parse (element.GetAttribute ("bundlesize")); }}//AssetInfo Managerpublic class AssetInfoManager{ //保存名称对应的AssetInfo public Dictionary<string, AssetInfo> mNameAssetInfos = new Dictionary<string, AssetInfo>(); //保存索引对应的AssetInfo public Dictionary<int, AssetInfo> mIndexAssetInfos = new Dictionary<int, AssetInfo>(); //上面两个Dic保存的AssetInfo是一样的,只是一个用string索引,一个用index索引 //构造函数 public AssetInfoManager() { } //加载AssetInfo信息 public void LoadAssetInfo() { //打开文件 StreamReader sr = ResourcesManager.OpenText("AssetInfo"); XmlDocument doc = new XmlDocument (); doc.LoadXml (sr.ReadToEnd ()); XmlElement root = doc.DocumentElement; IEnumerator iter = root.GetEnumerator (); //遍历每一个element while (iter.MoveNext()) { XmlElement child_root = iter.Current as XmlElement; //解析AssetInfo信息 AssetInfo assetInfo = new AssetInfo (); //导入信息 assetInfo.Import (child_root); //保存asset信息到列表 mNameAssetInfos.Add (assetInfo.mName, assetInfo); mIndexAssetInfos.Add (assetInfo.mIndex, assetInfo); } sr.Close (); } //根据名称获取Asset信息 public AssetInfo GetAssetInfo(string name) { if (mNameAssetInfos.ContainsKey(name)) { return mNameAssetInfos [name]; } else { return null; } } //根据id获取Asset信息 public AssetInfo GetAssetInfo(int index) { if (mIndexAssetInfos.ContainsKey(index)) { return mIndexAssetInfos [index]; } else { return null; } } //获取该Asset包含denpencyAsset的总大小 public int GetAllAssetSize(AssetInfo assetInfo) { int totalSize = 0; foreach (int index in assetInfo.mDependencies) { AssetInfo info = GetAssetInfo (index); totalSize = totalSize + info.mSize; } //加上本包大小 totalSize = totalSize + assetInfo.mSize; return totalSize; }}
阅读全文
0 0
- ResourceManager(二)—— AssetInfoManager
- ResourceManager(一)—— ArchiveManager
- ResourceManager(三)—— Request,ResourceAsyncOperation
- ResourceManager(四)—— ResourceUnit
- ResourceManager(五)—— ResourceCommon
- ResourceManager(六)—— ResourcesManager
- ResourceManager(七)—— 打包AssetBundle然后从AssetBundle加载资源
- ResourceManager(八)—— 在安卓机子上实现加载AssetBundle
- ResourceManager
- ResourceManager
- 【Hadoop】Hadoop官方文档翻译—— YARN ResourceManager High Availability 2.7.3
- Hadoop官方文档翻译—— YARN ResourceManager High Availability 2.7.3
- YARN源码分析(二)-----ResourceManager中的NM节点管理
- YARN源码分析(二)-----ResourceManager中的NM节点管理
- FLEX实践—在MXML与AS中分别引用resourceManager
- 使用 ResourceManager 类检索资源(来自MSDN)
- 研磨Hadoop源码(五)ResourceManager启动分析1
- 研磨Hadoop源码(六)ResourceManager启动分析2
- Coursera吴恩达 Deep Learning第二课第三周测验题Hyperparameter tuning, Batch Normalization, Programming Frameworks
- hdu 5242(贪心)
- 如何准备校招技术面试
- 文章标题
- HEVC代码学习29:getDistPart函数
- ResourceManager(二)—— AssetInfoManager
- redis的主从复制+高可用简单部署
- Codeforces Round #437B,C,D,E题目详解
- python print a+=1 报错
- 洛谷 2882[USACO] Face The Right Way 智商题(尺取法)
- 【C++】动态二维数组的创建
- C++模板:函数模板和模板函数
- 《文献管理与信息处理》 2.简易信息聚合--RSS
- HDU