目录为:Assets/Scripts/ResourceManager/
AssetInfoManager.cs
using System;
using System.Xml;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AssetInfo
{
public string mName;
public int mIndex;
public int mLevel;
public int mSize;
public List<int> mDependencies = new List<int> ();
public AssetInfo()
{
mSize = 0;
}
public void Import(XmlElement element)
{
mName = element.GetAttribute ("name");
mIndex = Int32.Parse (element.GetAttribute ("index"));
mLevel = Int32.Parse (element.GetAttribute ("level"));
string depencyStr = element.GetAttribute ("depency");
if (depencyStr != "")
{
string[] depencyStrList = depencyStr.Split (',');
for (int i = 0; i < depencyStrList.Length; i++)
{
int depencyIndex = Int32.Parse (depencyStrList [i]);
mDependencies.Add (depencyIndex);
}
}
mSize = Int32.Parse (element.GetAttribute ("bundlesize"));
}
}
public class AssetInfoManager
{
public Dictionary<string, AssetInfo> mNameAssetInfos = new Dictionary<string, AssetInfo>();
public Dictionary<int, AssetInfo> mIndexAssetInfos = new Dictionary<int, AssetInfo>();
public AssetInfoManager()
{
}
public void LoadAssetInfo()
{
StreamReader sr = ResourcesManager.OpenText("AssetInfo");
XmlDocument doc = new XmlDocument ();
doc.LoadXml (sr.ReadToEnd ());
XmlElement root = doc.DocumentElement;
IEnumerator iter = root.GetEnumerator ();
while (iter.MoveNext())
{
XmlElement child_root = iter.Current as XmlElement;
AssetInfo assetInfo = new AssetInfo ();
assetInfo.Import (child_root);
mNameAssetInfos.Add (assetInfo.mName, assetInfo);
mIndexAssetInfos.Add (assetInfo.mIndex, assetInfo);
}
sr.Close ();
}
public AssetInfo GetAssetInfo(string name)
{
if (mNameAssetInfos.ContainsKey(name))
{
return mNameAssetInfos [name];
}
else
{
return null;
}
}
public AssetInfo GetAssetInfo(int index)
{
if (mIndexAssetInfos.ContainsKey(index))
{
return mIndexAssetInfos [index];
}
else
{
return null;
}
}
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;
}
}