Ejemplo n.º 1
0
 public void Init(string path, Queue <AssetBundleLoadNode> nodeQueue = null)
 {
     AssetBundlePath  = path;
     Progress         = 0f;
     _loadCount       = 0;
     _nodeState       = AssetBundleNodeState.Waitting;
     _dependNodeQueue = nodeQueue;
     _allCount        = null == _dependNodeQueue ? 0 : _dependNodeQueue.Count + 1;
 }
Ejemplo n.º 2
0
 public void Reset()
 {
     AssetBundlePath  = null;
     Progress         = 0f;
     _allCount        = 0;
     _loadCount       = 0;
     _nodeState       = AssetBundleNodeState.Non;
     _dependNodeQueue = null;
     _assetBundleName = null;
     assetBundle      = null;
     _onLoadProgress  = null;
     _stopwatch.Stop();
 }
Ejemplo n.º 3
0
        public void Update()
        {
            switch (_nodeState)
            {
            case AssetBundleNodeState.Non:
                LogHelper.PrintError("[AssetBundleLoadNode]AssetBundleLoadNode is not init!");
                _nodeState = AssetBundleNodeState.Finish;
                break;

            case AssetBundleNodeState.Waitting:
                _nodeState = AssetBundleNodeState.Loading;
                Update();
                break;

            case AssetBundleNodeState.Loading:
                _stopwatch.Reset();
                _stopwatch.Start();
                AssetBundleLoadNode _curNode = null;
                while (true && _dependNodeQueue != null)
                {
                    if (_dependNodeQueue.Count < 1 && null == _curNode)
                    {
                        _stopwatch.Stop();
                        break;
                    }
                    if (_dependNodeQueue.Count > 0)
                    {
                        if (null == _curNode)
                        {
                            _curNode = _dependNodeQueue.Dequeue();
                        }
                    }
                    if (_curNode.NodeState == AssetBundleNodeState.Finish)
                    {
                        PoolMgr.Instance.ReleaseCsharpObject <AssetBundleLoadNode>(_curNode);
                        _curNode = null;
                        _loadCount++;
                        UpdateProgress();
                    }
                    else
                    {
                        _curNode.Update();
                    }
                    if (_stopwatch.Elapsed.Milliseconds >= ResourceMgr.Instance.MAX_LOAD_TIME)
                    {
                        _stopwatch.Stop();
                        return;
                    }
                }
                _stopwatch.Stop();
                assetBundle = AssetBundleMgr.Instance.LoadAssetBundleSync(AssetBundlePath);
                _nodeState  = AssetBundleNodeState.Finish;
                _loadCount++;
                UpdateProgress();
                break;

            case AssetBundleNodeState.Error:
                LogHelper.PrintError(string.Format("[AssetBundleLoadNode]AssetBundleLoadNode load asset:{0} error!"
                                                   , AssetBundlePath));
                _nodeState = AssetBundleNodeState.Finish;
                break;

            case AssetBundleNodeState.Finish:
                break;

            default:
                LogHelper.PrintError("[AssetBundleLoadNode]AssetBundleLoadNode error state!");
                _nodeState = AssetBundleNodeState.Finish;
                break;
            }
            return;
        }