//异步加载 public void LoadAsync(IXAssetManager manager, EnumFileLocation location, EnumBundleType bundleType, string name, Action <string, AssetBundle> callback = null) { m_AssetManager = manager; m_BundleName = name; m_dependencies.Clear(); var dependencies = manager.GetDependencies(m_BundleName); if (dependencies != null) { m_dependencies.AddRange(dependencies); m_dependencyCurCount = 0; m_dependencyMaxCount = dependencies.Count; foreach (var dependent in dependencies) { manager.LoadBundleAsync(dependent, _OnLoadedDependent); } } var fullPath = XABUtilities.GetBundleFullPath(location, bundleType, name); XDebug.Log(XABConst.Tag, $"加载 {fullPath}"); _StartLoadAsync(fullPath); m_state = EnumJobState.Process; m_callback += callback; }
public void Load <T>(IXAssetManager manager, string name) where T : Object { m_AssetManger = manager; m_BundleName = manager.GetBundleNameByAssetName(name); m_AssetXName = name; var assetBundle = manager.LoadBundle(m_BundleName); var assetObject = assetBundle.LoadAsset <T>(m_AssetXName); SetValue(assetObject); }
public XAssetManager() { #if UNITY_EDITOR var mode = (EnumResMode)UnityEditor.EditorPrefs.GetInt(XABConst.EKResMode, XABConst.EKResModeValue); if (mode == EnumResMode.Simulate) { m_instance = new XAssetManagerSimulate(); XDebug.Log(XABConst.Tag, "模拟模式"); } else #endif { m_instance = new XAssetManagerOrdinary(); XDebug.Log(XABConst.Tag, "普通模式"); } }
//同步加载 public void Load(IXAssetManager manager, EnumFileLocation location, EnumBundleType bundleType, string name) { m_AssetManager = manager; m_BundleName = name; m_dependencies.Clear(); var dependencies = manager.GetDependencies(m_BundleName); if (dependencies != null) { m_dependencies.AddRange(dependencies); foreach (var dependency in dependencies) { manager.LoadBundle(dependency); } } var fullPath = XABUtilities.GetBundleFullPath(location, bundleType, name); XDebug.Log(XABConst.Tag, $"加载 {fullPath}"); SetValue(_LoadInternal(fullPath)); }
public void LoadAsync <T>(IXAssetManager manager, string name, Action <string, Object> callback = null) where T : Object { m_AssetManger = manager; m_BundleName = manager.GetBundleNameByAssetName(name); m_AssetXName = name; manager.LoadBundleAsync(m_BundleName, (bundleName, assetBundle) => { if (m_BundleName != bundleName) { return; } if (assetBundle == null) { SetValue(null); return; } m_LoadAssetRequest = assetBundle.LoadAssetAsync <T>(m_AssetXName); }); m_state = EnumJobState.Process; m_callback += callback; }
// Start is called before the first frame update void Start() { XDebug.Initialize(); m_assetManager = XService.AddService <XAssetManager>(); m_assetManager.Initialize(); }