using System.Collections; using System.IO; using UnityEditor; using UnityEngine; using System.Collections.Generic; using System;
class ProjectBuild : Editor { //在这里找出你当前工程所有的场景文件,假设你只想把部分的scene文件打包 那么这里可以写你的条件判断 总之返回一个字符串数组。 static string[] GetBuildScenes() { List<string> names = new List<string>(); foreach (EditorBuildSettingsScene e in EditorBuildSettings.scenes) { if (e == null) continue; if (e.enabled) names.Add(e.path); } return names.ToArray(); }
using UnityEngine; using System.Collections; using System.IO; public class Function { //得到项目的名称 public static string projectName { get { //在这里分析shell传入的参数, 还记得上面我们说的哪个 project-$1 这个参数吗? //这里遍历所有参数,找到 project开头的参数, 然后把-符号 后面的字符串返回, //这个字符串就是 91 了。。 foreach (string arg in System.Environment.GetCommandLineArgs()) { if (arg.StartsWith("project")) { return arg.Split("-"[0])[1]; } } return "test"; } }
public static void DeleteFolder(string dir) { foreach (string d in Directory.GetFileSystemEntries(dir)) { if (File.Exists(d)) { FileInfo fi = new FileInfo(d); if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1) fi.Attributes = FileAttributes.Normal; File.Delete(d); } else { DirectoryInfo d1 = new DirectoryInfo(d); if (d1.GetFiles().Length != 0) { DeleteFolder(d1.FullName);////递归删除子文件夹 } Directory.Delete(d); } } }
public static void CopyDirectory(string sourcePath, string destinationPath) { DirectoryInfo info = new DirectoryInfo(sourcePath); Directory.CreateDirectory(destinationPath); foreach (FileSystemInfo fsi in info.GetFileSystemInfos()) { string destName = Path.Combine(destinationPath, fsi.Name); if (fsi is System.IO.FileInfo) File.Copy(fsi.FullName, destName); else { Directory.CreateDirectory(destName); CopyDirectory(fsi.FullName, destName); } } } }
如下图所示,脚本运行完毕,你打包的APK就静静的放在了这里,怎么样?简单吧?嘿嘿。。
注意事项:
1、因为你的工程可能比较大,如果IOS和Android同时打包的话切个平台都要半个多小时,我建议的svn在本地check out 两个工程,一个切在ios 一个切在Android 打包的时候分开打。