static void DoIt()
    {
        if (!System.IO.File.Exists(TestData.config_resource))
        {
            EditorUtility.DisplayDialog("不得行", "找不到" + TestData.config_resource, "咋办喃");
            return;
        }

        if (!System.IO.Directory.Exists(TestData.testResource_path))
        {
            System.IO.Directory.CreateDirectory(TestData.testResource_path);
        }

        string   json = System.IO.File.ReadAllText(TestData.config_resource);
        CopyMaps maps = JsonMapper.ToObject <CopyMaps>(json);

        string home = TargetPath.GetHome();

        for (int i = 0; i < maps.copyMap.Length; i++)
        {
            string source = home + "/.root/" + maps.copyMap[i];
            string dest   = TestData.testResource_path + System.IO.Path.GetFileName(maps.copyMap[i]);
            if (System.IO.File.Exists(source))
            {
                System.IO.File.Copy(source, dest, true);
            }
            else
            {
                EditorUtility.DisplayDialog("搞不定", "文件不存在:" + source, "咋办");
            }
        }
        EditorUtility.DisplayDialog("搞定了", "拷贝完毕", "好了");
    }
예제 #2
0
        static void DoIt()
        {
            string[] files = System.IO.Directory.GetFiles("Assets/Doubility3D/CoreData", "*.*", System.IO.SearchOption.AllDirectories);
            files = files.Where(s => s.EndsWith(".mat") || s.EndsWith(".exr") || s.EndsWith(".shader")).ToArray();
            files = Array.ConvertAll <string, string> (files, new Converter <string, string> ((s) => {
                return(s.Replace('\\', '/'));
            }));

            AssetBundleBuild[] buildMap = new AssetBundleBuild[1];
            buildMap [0].assetBundleName = "coreData.bundle";
            buildMap [0].assetNames      = files;

            Dictionary <string, string> dictShaderName2Path = new Dictionary <string, string> ();

            for (int i = 0; i < files.Length; i++)
            {
                if (files [i].EndsWith(".shader"))
                {
                    Shader shader = AssetDatabase.LoadAssetAtPath <Shader> (files [i]);
                    if (dictShaderName2Path.ContainsKey(shader.name))
                    {
                        EditorUtility.DisplayDialog("不得行", "Shader 名字:" + shader.name + "不唯一", "晓得不嘛");
                        return;
                    }
                    dictShaderName2Path.Add(shader.name, files [i]);
                }
            }

            string jsonString = JsonMapper.ToJson(dictShaderName2Path);

            System.IO.File.WriteAllText(ShaderDictionary.Path, jsonString);
            AssetDatabase.Refresh();

            Array.Resize <string> (ref buildMap [0].assetNames, buildMap [0].assetNames.Length + 1);
            buildMap [0].assetNames [buildMap [0].assetNames.Length - 1] = ShaderDictionary.Path;

            if ((EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) &&
                (EditorUserBuildSettings.activeBuildTarget != BuildTarget.iOS) &&
                (EditorUserBuildSettings.activeBuildTarget != BuildTarget.StandaloneWindows) &&
                (EditorUserBuildSettings.activeBuildTarget != BuildTarget.StandaloneWindows64))
            {
                EditorUtility.DisplayDialog("不得行", EditorUserBuildSettings.activeBuildTarget.ToString() + "是不支持的平台", "晓得不嘛");
            }

            string outputFolder = TargetPath.GetHome() + "/.coreData/" + TargetPath.GetPath(EditorUserBuildSettings.activeBuildTarget);

            if (!System.IO.Directory.Exists(outputFolder))
            {
                System.IO.Directory.CreateDirectory(outputFolder);
            }
            BuildPipeline.BuildAssetBundles(outputFolder, buildMap, BuildAssetBundleOptions.None, EditorUserBuildSettings.activeBuildTarget);
            EditorUtility.DisplayDialog("搞定了", "核心数据输出完毕", "好了");

            System.IO.File.Delete(ShaderDictionary.Path);
            AssetDatabase.Refresh();
        }
예제 #3
0
        void ConvertIt()
        {
            string[] files = null;
            if (configData.selectType == 0) {
                Debug.Log (configData.assetRoot + "是文件夹");
                files = Directory.GetFiles (configData.assetRoot, "*.fbx", SearchOption.AllDirectories);
            } else if (configData.selectType == 1) {
                Debug.Log (configData.pathSelect + "是文件夹");
                files = Directory.GetFiles (configData.pathSelect, "*.fbx", SearchOption.AllDirectories);
            } else if (configData.selectType == 2) {
                Debug.Log (configData.pathSelect + "是文件");
                files = new string[] { configData.pathSelect };
            }

            files = Array.ConvertAll<string, string> (files, new Converter<string, string> (getPath));
            Array.Sort<string> (files, new Comparison<string> ((s1, s2) => {
                return string.Compare (s1, s2);
            }));

            if (files != null) {
                // 以目录为单位进行pass
                Dictionary<string, List<string>> dictFiles = new Dictionary<string, List<string>> ();
                foreach (string file in files) {
                    string key = System.IO.Path.GetDirectoryName (file);
                    if (!dictFiles.ContainsKey (key)) {
                        dictFiles [key] = new List<string> ();
                    }
                    dictFiles [key].Add (file);
                }

                string targetFolder = TargetPath.GetHome() + "/.root";
                foreach (var pair in dictFiles) {
                    string targetDir = targetFolder + "/" + pair.Key;
                    if (!System.IO.Directory.Exists (targetDir)) {
                        System.IO.Directory.CreateDirectory (targetDir);
                    }

                    List<string> thisFiles = pair.Value;
                    foreach (string file in thisFiles) {
                        // 过滤
                        if (configData.filterType != 0) {
                            if (filter (file))
                                continue;
                        }

                        // todo:转换文件
                        UnityModelConvert.Convert (ArtWork.path + file, targetDir);
                    }
                }
                Debug.Log ("全部转换完毕");
                ConfigDataFile.Save (configData);
            }
        }
예제 #4
0
    static void DoIt()
    {
        string[] files = System.IO.Directory.GetFiles(ArtWork.path, "*.*", System.IO.SearchOption.AllDirectories);
        files = files.Where(s => s.EndsWith(".tga") || s.EndsWith(".png") || s.EndsWith(".jpg")).ToArray();
        files = Array.ConvertAll <string, string>(files, new Converter <string, string>((s) => { return(s.Replace('\\', '/')); }));

        if ((EditorUserBuildSettings.activeBuildTarget != BuildTarget.Android) &&
            (EditorUserBuildSettings.activeBuildTarget != BuildTarget.iOS) &&
            (EditorUserBuildSettings.activeBuildTarget != BuildTarget.StandaloneWindows) &&
            (EditorUserBuildSettings.activeBuildTarget != BuildTarget.StandaloneWindows64))
        {
            EditorUtility.DisplayDialog("不得行", EditorUserBuildSettings.activeBuildTarget.ToString() + "是不支持的平台", "晓得不嘛");
        }

        string[] names = files;
        for (int i = 0; i < names.Length; i++)
        {
            Texture2D texture = AssetDatabase.LoadAssetAtPath <Texture2D>(names[i]);

            string path = names[i].Substring(ArtWork.path.Length);
            path = System.IO.Path.GetDirectoryName(path) + "/" + System.IO.Path.GetFileNameWithoutExtension(path);
            path = TargetPath.GetHome() + "/.root/" + path + "." + TargetPath.GetPath(EditorUserBuildSettings.activeBuildTarget).ToLower() + ".texture";

            string folder = System.IO.Path.GetDirectoryName(path);
            if (!System.IO.Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory(folder);
            }

            ByteBuffer bb = TextureSaver.Save(texture);
            FileSaver.Save(bb, Schema.Context.Texture, path);
        }

        names = null;
        EditorUtility.DisplayDialog("搞定了", "纹理输出完毕", "好了");
    }