static void ExportSceneAssetBundle(string directory, BuildTarget target) { directory = GetTargetDirectory(directory, target) + "scenes/"; ReadyDirectory(directory, target); Dictionary <string, uint> crcList = new Dictionary <string, uint>(); List <string> scenes = FindRemoteScenes(); int index = 0; foreach (string scene in scenes) { uint crc = 0; string fileName = scene.Substring(scene.LastIndexOf("/") + 1); string name = fileName.Substring(0, fileName.LastIndexOf(".")); string path = directory + name + ".unity3d"; string [] levels = { scene }; foreach (string s in levels) { Debug.Log("build:" + s); } BuildPipeline.BuildStreamedSceneAssetBundle(levels, path, target, out crc, 0); crcList.Add(name, crc); index++; } string json = JsonMapper.ToJson(crcList); PersistenceUtil.SaveTextFile(directory + "scenes.meta", json); }
IEnumerator LoadScenes(NetResult result) { yield return(Service.Run(DownloadSceneMeta(result))); if (result.IsFailed()) { logger.LogError("Can not load scene meta."); yield break; } #if UNITY_EDITOR && BOOT_BUNDLE_EDIT yield break; #endif // init count doneCount = 0; string text = Service.sb.Get("loading.status.bundle.load.scene"); if (presenter != null) { presenter.SetDescription(string.Format(text, 0)); } successSceneWorkerCount = 0; failedSceneWorkerCount = 0; for (int index = 0; index < worker; index++) { Service.Run(LoadSceneWorker(index)); } // waiting load while (true) { yield return(new WaitForSeconds(0.1f)); if (successSceneWorkerCount + failedSceneWorkerCount < worker) { continue; } break; } // result check if (failedSceneWorkerCount > 0) { result.SetSuccess(false); } else { result.SetSuccess(true); PersistenceUtil.SaveTextFile(remoteScenesMetaFilePath, remoteScenesMeta); } }
private void ReportQuestions() { StringBuilder sb = new StringBuilder(); int count = 0; foreach (string key in bundles.Keys) { var container = bundles[key]; if (container.ContainsKey("en") == true && container.ContainsKey("ko") == true) { if (questions.ContainsKey(key) == false) { continue; } var question = questions[key]; if (question.Contains("en") == false) { continue; } sb.Append(key); sb.Append("\t"); sb.Append("|ko| "); sb.Append(container["ko"].Replace("\n", "\\n")); sb.Append("\t"); sb.Append("|en| "); sb.Append(container["en"].Replace("\n", "\\n")); sb.Append("\n"); count++; } } string path = Application.persistentDataPath + "/QuestionStringBundle.txt"; PersistenceUtil.SaveTextFile(path, sb.ToString()); if (count > 0) { Debug.LogError("Question strings: " + count); } }
static void ExportResource(string directory, BuildTarget target) { directory = GetTargetDirectory(directory, target) + "resources/"; ReadyDirectory(directory, target); List <Object> objects = new List <Object>(); List <string> files = TraverseTree("Assets/Resources2Pack"); Dictionary <string, uint> crcList = new Dictionary <string, uint>(); foreach (string file in files) { Object obj = AssetDatabase.LoadAssetAtPath <Object>(file); objects.Add(obj); Object[] selection = objects.ToArray(); string fileName = file.Substring(file.LastIndexOf("/") + 1); string name = fileName.Substring(0, fileName.LastIndexOf(".")); string path = directory + name + ".unity3d"; if (name.Length == 0) { continue; } if (crcList.ContainsKey(name)) { Debug.LogError(name + " is already exist!"); } uint crc = 0; BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, out crc, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets, target); objects.Clear(); crcList.Add(name, crc); } string json = JsonMapper.ToJson(crcList); PersistenceUtil.SaveTextFile(directory + "resources.meta", json); }
private void ReportUntranslated() { StringBuilder sb = new StringBuilder(); int count = 0; foreach (string key in bundles.Keys) { var container = bundles[key]; if (container.ContainsKey("en") == false) { sb.Append(key); sb.Append("\n"); foreach (string lang in container.Keys) { sb.Append(" |"); sb.Append(lang); sb.Append("| "); sb.Append(container[lang].Replace("\n", "\\n")); sb.Append("\n"); } sb.Append(" |en| \n"); count++; } } string path = Application.persistentDataPath + "/UntranslatedStringBundle.txt"; PersistenceUtil.SaveTextFile(path, sb.ToString()); if (count > 0) { Debug.LogError("Untranslated strings: " + count); } }