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("搞定了", "拷贝完毕", "好了"); }
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(); }
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); } }
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("搞定了", "纹理输出完毕", "好了"); }