public static Table GetTable(string tablePath) { var id = AssetId.Parse(tablePath, _DefaultBundle); for (var i = 0; i < 2; i++) { if (_Tables.TryGetValue(id, out var value) && value.UnDeserialized == null) { return(value.Deserialized); } if (value.UnDeserialized != null) { value.Deserialized = new Table(JsonConvert.DeserializeObject <JsonTableReciever>(value.UnDeserialized)); value.UnDeserialized = null; _Tables[id] = value; return(value.Deserialized); } LoadBundle(id); Assert.IsTrue(_Tables.TryGetValue(id, out _), $"未在 {id.Bundle} 内找到名为 {id.Name} 的table"); } return(default);
public static Table GetTable(string tablePath) { var id = AssetId.Parse(tablePath); for (var i = 0; i < 2; i++) { if (_Tables.TryGetValue(id, out var value) && string.IsNullOrEmpty(value.UnDeserialized)) { return(value.Deserialized); } if (value.UnDeserialized != null) { value.Deserialized = new Table(JsonConvert.DeserializeObject <JsonTableReceiver>(value.UnDeserialized)); value.UnDeserialized = null; _Tables[id] = value; return(value.Deserialized); } LoadBundle(id); if (!_Tables.TryGetValue(id, out _)) { throw new Exception($"未在 {id.Bundle} 内找到名为 {id.Name} 的table"); } } return(default);
/// <summary> /// 删除指定bundle的所有表 /// </summary> /// <param name="bundlePath"></param> public static void DeleteAllTable(string bundlePath) { var id = AssetId.Parse(bundlePath, _DefaultBundle); var keys = _Tables.Keys.Where(x => x.Bundle == id.Bundle).ToArray(); foreach (var tableId in keys) { _Tables.Remove(tableId); } }
/// <summary> /// 从对象池中取出对象 /// </summary> /// <typeparam name="T">需要转换的类型</typeparam> /// <param name="assetPath"></param> /// <returns></returns> public static T Get <T>(string assetPath) where T : MonoBehaviour { return(Get <T>(AssetId.Parse(assetPath))); }
public static T GetAsset <T>(string assetPath) where T : Object { return(GetAsset <T>(AssetId.Parse(assetPath))); }
public static T GetValue <T>(string valuePath) { return(GetValue <T>(AssetId.Parse(valuePath, _DefaultBundle))); }
/// <summary> /// 谨慎使用,若删除表后再获取会引起大量的重复载入 /// </summary> public static bool DeleteTable(string tablePath) { return(_Tables.Remove(AssetId.Parse(tablePath, _DefaultBundle))); }
public static T GetValue <T>(string assetPath) { return(GetValue <T>(AssetId.Parse(assetPath))); }
public static string GetRawValue(string assetPath) { return(GetRawValue(AssetId.Parse(assetPath))); }