读取配置表i信息:
private void LoadDefaultConfig()
{
TextAsset binAsset = ResourceMgr.LoadConfig("Config/Default", typeof(TextAsset)) as TextAsset;
string[] lineArray = binAsset.text.Split("\r"[0]);//获取换行后的所有信息
string[][] array = new string[lineArray.Length][];
for (int i = 0; i < lineArray.Length; i++)
{
array[i] = lineArray[i].Split("\t"[0]);//按空格分隔
if (i == 0)
{
continue;
}
if (array[i].Length != 9)
{
continue;
}
DefaultConfig info = new DefaultConfig();
info.id = int.Parse(array[i][0]);
if (!_dic_Defaultconfig.ContainsKey(info.id))
{
_dic_Defaultconfig.Add(info.id, info);
}
}
}
///加载资源类 ResourceMgr
private static AssetBundle cachedConfig;
public static Object LoadConfig(string name, System.Type type)
{
Object obj = null;
if (AssetConfig.UseAssetBundle)
{
if (cachedConfig == null)
{
string path = AssetConfig.configBundle;
using (FileStream fs = File.OpenRead(AssetConfig.runningPath + path))
{
byte[] data = new byte[fs.Length];
fs.Read(data, 0, data.Length);
cachedConfig = AssetBundle.LoadFromMemory(DecryptAes(data));
}
}
obj = cachedConfig.LoadAsset(name.Replace("Config/", "") + ".txt", type);
}
else
{
#if UNITY_EDITOR
obj = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/" + name + ".txt", type);
#endif
}
return obj;
}
public static string runningPath
{
get
{
if (Application.platform == RuntimePlatform.IPhonePlayer && PlayerPrefs.GetString("CopyFilesInIOS") != "Done")
return Application.streamingAssetsPath + "/" + AssetResRoot + "/";
return Application.persistentDataPath + "/" + AssetResRoot + "/";
}
}
private static byte[] DecryptAes(byte[] data)
{
using (System.Security.Cryptography.AesCryptoServiceProvider aesProvider = new System.Security.Cryptography.AesCryptoServiceProvider())
{
aesProvider.Key = AssetConfig.GetAesKey();
aesProvider.Mode = System.Security.Cryptography.CipherMode.ECB;
aesProvider.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
using (System.Security.Cryptography.ICryptoTransform cryptoTransform = aesProvider.CreateDecryptor())
{
byte[] results = cryptoTransform.TransformFinalBlock(data, 0, data.Length);
aesProvider.Clear();
return results;
}
}
}
1.数字数组json 格式
public List<int> ReadDataToNum(string str)
{
List<int> list = new List<int>();
if (str != "null")
{
string strs;
if (str.Contains(","))
{
strs = str.Substring(1, str.Length - 2);
}
else
{
strs = str;
}
JsonData jd = JsonMapper.ToObject(strs);
for (int i = 0; i < jd.Count; i++)
{
list.Add(int.Parse(jd[i].ToString()));
}
}
return list;
}
2.属性值json 格式 "[{""AttrId"":101,""AttrValue"":1000}]"
//AttTypeEnum 枚举
//不同属性值id
public SortedDictionary<AttTypeEnum, float> ReadTypeAdditionInfo(string str)
{
SortedDictionary<AttTypeEnum, float> levelAddList = new SortedDictionary<AttTypeEnum,float>();
if (str != "null")
{
string strs;
if (str.Contains(",") || str.Substring(0,1) == "\"" )
{
strs = str.Substring(1, str.Length - 2).Replace("\"\"", "\"");
}
else
{
strs = str.Replace("\"\"", "\"");
}
JsonData jd = JsonMapper.ToObject(strs);
IDictionary dict = jd as IDictionary;
foreach (string key in dict.Keys )
{
AttTypeEnum aType = (AttTypeEnum)int.Parse(key);
float value = float.Parse(dict[key].ToString() );
levelAddList.Add(aType, value);
}
}
return levelAddList;
}
3.道具 Item 类 json 格式 "[{""ItemId"":1,""ItemQuantity"":50}]"
public class TaskItem
{
public int Itemid;
public int Itemnum;
}
public List<TaskItem> ReadTaskReward(string str)
{
List<TaskItem> list = new List<TaskItem>();
if (str != "null")
{
string strs = str.Substring(1, str.Length - 2).Replace("\"\"", "\"");
JsonData jd = JsonMapper.ToObject(strs);
for (int i = 0; i < jd.Count; i++)
{
TaskItem data = new TaskItem();
data.Itemid = int.Parse((jd[i]["ItemId"]).ToString());
data.Itemnum = int.Parse((jd[i]["ItemQuantity"]).ToString());
list.Add(data);
}
}
return list;
}