using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEditor;
|
using System.IO;
|
using UnityEngine.UI;
|
|
public class ExportUIPackage
|
{
|
|
static string exportFileName = Application.dataPath + "/UIPackage.unitypackage";
|
static string uiroot = "Assets/ResourcesOut/UI";
|
static string builtIn = "Assets/ResourcesOut/BuiltIn/Prefabs";
|
static string windowreferenceTable = "Assets/Editor/Config/Windows.txt";
|
|
[MenuItem("策划工具/导出UI Package", false, 4)]
|
public static void Export()
|
{
|
var windowGuids = new List<string>();
|
windowGuids.AddRange(AssetDatabase.FindAssets("Win t:prefab", new string[] { builtIn }));
|
windowGuids.AddRange(AssetDatabase.FindAssets("Win t:prefab", new string[] { uiroot }));
|
|
var windowReferenceConfigRoot = Application.dataPath + "/WindowAssets/";
|
if (!Directory.Exists(windowReferenceConfigRoot))
|
{
|
Directory.CreateDirectory(windowReferenceConfigRoot);
|
}
|
|
var windowAssets = new List<string>();
|
foreach (var item in windowGuids)
|
{
|
var path = AssetDatabase.GUIDToAssetPath(item);
|
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
var fileName = Path.GetFileNameWithoutExtension(path);
|
|
var sprites = new List<string>();
|
var components = prefab.GetComponentsInChildren<Image>(true);
|
foreach (var image in components)
|
{
|
if (image.sprite != null)
|
{
|
var spritePath = AssetDatabase.GetAssetPath(image.sprite).Replace("Assets/", "");
|
if (!sprites.Contains(spritePath))
|
{
|
sprites.Add(spritePath);
|
}
|
}
|
}
|
|
File.WriteAllLines(windowReferenceConfigRoot + fileName + ".txt", sprites.ToArray(), System.Text.Encoding.UTF8);
|
}
|
|
var guids = new List<string>();
|
guids.AddRange(AssetDatabase.FindAssets("t:TextAsset", new string[] { "Assets/WindowAssets" }));
|
guids.AddRange(AssetDatabase.FindAssets("t:prefab", new string[] { builtIn }));
|
guids.AddRange(AssetDatabase.FindAssets("Font", new string[] { uiroot }));
|
guids.AddRange(AssetDatabase.FindAssets("t:prefab", new string[] { uiroot }));
|
guids.AddRange(AssetDatabase.FindAssets("t:Texture2D", new string[] { uiroot }));
|
guids.AddRange(AssetDatabase.FindAssets("t:Sprite", new string[] { uiroot }));
|
|
var assets = new List<string>();
|
foreach (var item in guids)
|
{
|
assets.Add(AssetDatabase.GUIDToAssetPath(item));
|
}
|
|
assets.Add(windowreferenceTable);
|
AssetDatabase.ExportPackage(assets.ToArray(), exportFileName, ExportPackageOptions.Default);
|
}
|
|
[MenuItem("策划工具/生成window参照表", false, 5)]
|
public static void ExportAllWindowNames()
|
{
|
var lines = new List<string>();
|
var filePath = Application.dataPath + "/Editor/Config/Windows.txt";
|
if (File.Exists(filePath))
|
{
|
lines.AddRange(File.ReadAllLines(filePath, System.Text.Encoding.UTF8));
|
}
|
|
var windowNames = new List<string>();
|
foreach (var item in lines)
|
{
|
windowNames.Add(item.Split('\t')[0]);
|
}
|
|
var guids = new List<string>();
|
guids.AddRange(AssetDatabase.FindAssets("Win t:prefab", new string[] { builtIn }));
|
guids.AddRange(AssetDatabase.FindAssets("Win t:prefab", new string[] { uiroot }));
|
|
var assets = new List<string>();
|
foreach (var item in guids)
|
{
|
var name = Path.GetFileNameWithoutExtension(AssetDatabase.GUIDToAssetPath(item));
|
if (!windowNames.Contains(name))
|
{
|
lines.Add(StringUtility.Contact(name, "\t"));
|
}
|
}
|
|
File.WriteAllLines(filePath, lines.ToArray(), System.Text.Encoding.UTF8);
|
}
|
|
}
|