Exemplo n.º 1
0
    public override IEnumerator LoadAsync()
    {
#if UNITY_EDITOR
        if (AssetPath.mode == AssetMode.Editor)
        {
            yield break;
        }
#endif
        string[] dependenceNames = AssetLoader.GetDirectDependencies(bundleName);
        if (dependenceNames != null)
        {
            for (int i = 0; i < dependenceNames.Length; ++i)
            {
                string dependenceName = dependenceNames[i];

                BundleAsset bundleObject;
                if (dependences.TryGetValue(dependenceName, out bundleObject) == false)
                {
                    bundleObject = AssetLoader.GetOrCreateBundle <BundleAsset>(dependenceName);
                    bundleObject.AddDependenceBy(this);

                    dependences.Add(dependenceName, bundleObject);
                }
            }
        }

        var it = dependences.GetEnumerator();
        while (it.MoveNext())
        {
            BundleAsset bundleObject = it.Current.Value;
            if (bundleObject.status == LoadStatus.None)
            {
                yield return(bundleObject.LoadAsync());
            }
        }

        yield return(base.LoadAsync());
    }