74 lines
3.0 KiB
C#
74 lines
3.0 KiB
C#
#if UNITY_EDITOR
|
|
using UnityEngine;
|
|
using System.IO;
|
|
using UnityEditor;
|
|
using System.Text;
|
|
using System.Diagnostics;
|
|
public class CommandBuild : Editor
|
|
{
|
|
public static string inputPath = string.Format("{0}/Content/Raw_Art/UI", Application.dataPath);//小图目录
|
|
public static string outputPath = string.Format("{0}/Content/Altas", Application.dataPath);//用TP打包好的图集存放目录
|
|
|
|
[MenuItem("Tools/SpritesPacker/CommandBuild")]
|
|
public static void BuildTexturePacker()
|
|
{
|
|
//选择并设置TP命令行的参数和参数值
|
|
string commandText = " --sheet {0}.png --data {1}.xml --format sparrow --trim-mode None --pack-mode Best --smart-update --algorithm MaxRects --max-size 2048 --size-constraints POT --disable-rotation --scale 1 {2}";
|
|
string[] imagePath = Directory.GetDirectories (inputPath);
|
|
for (int i = 0; i < imagePath.Length; ++i)
|
|
{
|
|
UnityEngine.Debug.Log (imagePath [i]);
|
|
StringBuilder sb = new StringBuilder("");
|
|
string[] fileName = Directory.GetFiles(imagePath[i]);
|
|
for (int j = 0; j < fileName.Length; ++j)
|
|
{
|
|
string extenstion = Path.GetExtension(fileName[j]);
|
|
if (extenstion == ".png")
|
|
{
|
|
sb.Append(fileName[j]);
|
|
sb.Append(" ");
|
|
UnityEngine.Debug.Log("fileName [j]:" + fileName[j]);
|
|
}
|
|
}
|
|
string name = Path.GetFileName(imagePath [i]);
|
|
string outputName = string.Format ("{0}/{1}", outputPath, name);
|
|
string sheetName = string.Format("{0}/TP/SheetsByTP/{1}", Application.dataPath, name);
|
|
//执行命令行
|
|
processCommand("D:/TexturePacker/bin/TexturePacker.exe", string.Format(commandText, sheetName, sheetName, sb.ToString()));
|
|
}
|
|
AssetDatabase.Refresh();
|
|
}
|
|
|
|
private static void processCommand(string command, string argument)
|
|
{
|
|
ProcessStartInfo start = new ProcessStartInfo(command);
|
|
start.Arguments = argument;
|
|
start.CreateNoWindow = false;
|
|
start.ErrorDialog = true;
|
|
start.UseShellExecute = false;
|
|
|
|
if(start.UseShellExecute){
|
|
start.RedirectStandardOutput = false;
|
|
start.RedirectStandardError = false;
|
|
start.RedirectStandardInput = false;
|
|
} else{
|
|
start.RedirectStandardOutput = true;
|
|
start.RedirectStandardError = true;
|
|
start.RedirectStandardInput = true;
|
|
start.StandardOutputEncoding = System.Text.UTF8Encoding.UTF8;
|
|
start.StandardErrorEncoding = System.Text.UTF8Encoding.UTF8;
|
|
}
|
|
|
|
Process p = Process.Start(start);
|
|
if(!start.UseShellExecute)
|
|
{
|
|
UnityEngine.Debug.Log(p.StandardOutput.ReadToEnd());
|
|
UnityEngine.Debug.Log(p.StandardError.ReadToEnd());
|
|
}
|
|
|
|
p.WaitForExit();
|
|
p.Close();
|
|
}
|
|
|
|
}
|
|
#endif |