示例#1
0
        static void Initialize()
        {
            _characterList = new List <CharacterData>();
            _characters    = new Dictionary <uint, CharacterData>();
            _scenes        = new List <SceneData>();

            AssetBundleManager.AddHandler <CharacterData>(AddCharacter);
            AssetBundleManager.AddHandler <SceneData>(AddScene);

            Characters = new ReadOnlyCollection <CharacterData>(_characterList);
            Scenes     = new ReadOnlyCollection <SceneData>(_scenes);

            SceneManager.sceneLoaded += SceneLoad;

            var bundlePath = BundleUtility.StoragePath;

            log.Info("Storage Path: {0}", bundlePath);

#if UNITY_EDITOR
            if (AssetBundleManager.SimulateAssetBundleInEditor)
            {
                LoadFromEditor <CharacterData>(AddCharacter);
                LoadFromEditor <SceneData>(AddScene);
                LoadTask.Resolve();
            }
            else
#endif
            {
                var dataFilePath = Path.Combine(bundlePath, "data");
                if (!File.Exists(dataFilePath))
                {
                    log.Info("Cannot find {0} copying StreamingAssets...", dataFilePath, bundlePath);
                    AssetBundleManager.CopyDirectory(Application.streamingAssetsPath, bundlePath);
                }

                var file      = File.ReadAllText(dataFilePath);
                var whitelist = new List <string>();
                var blacklist = new List <string>();
                foreach (var entry in file.Split('\n'))
                {
                    if (entry.StartsWith("-"))
                    {
                        blacklist.Add(entry.Substring(1).Trim());
                        log.Info("Registered bundle blacklist: {0}".With(entry.Substring(1).Trim()));
                    }
                    else
                    {
                        whitelist.Add(entry.Trim());
                        log.Info("Registered bundle whitelist: {0}".With(entry.Trim()));
                    }
                }

                var task = AssetBundleManager.LoadLocalBundles(whitelist, blacklist);
                task.Then(() => LoadTask.Resolve());
                task.Done();
            }
        }