Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 4
0
    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);
        }
    }