示例#1
0
        //异步加载
        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;
        }
示例#2
0
        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);
        }
示例#3
0
        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, "普通模式");
            }
        }
示例#4
0
        //同步加载
        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));
        }
示例#5
0
        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;
        }
示例#6
0
 // Start is called before the first frame update
 void Start()
 {
     XDebug.Initialize();
     m_assetManager = XService.AddService <XAssetManager>();
     m_assetManager.Initialize();
 }