IEnumerator PreloadAsync(AssetStep step, AssetLanguage language) { asset.SetResrouceTable(step, language); while (!asset.Resource.IsTableLoaded) { yield return(null); } bool isPreloaded = false; asset.Resource.LoadPrefab("Loading.prefab", (Loading prefab) => { var loading = Instantiate <Loading>(prefab); AssetBundlePreloader preloader = asset.GetResourcePreloader(); preloader.StartPreloading(); loading.Init(preloader, () => { Destroy(loading.gameObject); isPreloaded = true; }); }); while (!isPreloaded) { yield return(null); } }
IEnumerator Start() { asset.Init(); yield return(PreloadAsync(AssetStep.Title, AssetLanguage.English)); bool isTitleFinished = false; AssetLanguage language = default(AssetLanguage); asset.Resource.LoadPrefab("Title.prefab", (Title prefab) => { var title = Instantiate <Title>(prefab); title.Init( (AssetLanguage l) => { language = l; isTitleFinished = true; Destroy(title.gameObject); }, () => StartCoroutine(ClearAsync())); }); while (!isTitleFinished) { yield return(null); } yield return(PreloadAsync(AssetStep.All, language)); asset.Resource.LoadPrefab("End.prefab", (End prefab) => { var end = Instantiate <End>(prefab); end.Init(asset); }); }
string GetLanguagePart(AssetLanguage language) { switch (language) { case AssetLanguage.English: return("[en]"); case AssetLanguage.Japanese: return("[jp]"); default: Debug.LogError($"unknown asset language: {language}"); return(""); } }
public void Init(Action <AssetLanguage> startAction, Action clearAction) { toggleEn.onValueChanged.RemoveAllListeners(); toggleEn.onValueChanged.AddListener(b => { if (b) { language = AssetLanguage.English; } }); toggleJp.onValueChanged.RemoveAllListeners(); toggleJp.onValueChanged.AddListener(b => { if (b) { language = AssetLanguage.Japanese; } }); startButton.onClick.RemoveAllListeners(); startButton.onClick.AddListener(() => startAction?.Invoke(language)); clearButton.onClick.RemoveAllListeners(); clearButton.onClick.AddListener(() => clearAction?.Invoke()); }