导语
这个版本比较通用,部分扩展功能还没有来得级实现,如有特殊要求,还望自行修改。
话不多少说,代码一般,还望见谅。
美术资源匹配工具
--- 功能需求
--- 基本功能
--- 根据文件名自动绑定对应名称的Unity 预制件
--- 检查源文加夹和对应文件夹的重名情况
--- 扩展功能
--- 指定文件名操作绑定Unity 预制件
--- 大批量更新
--- 需求文件
--- 美术资源源文件夹(UI文件)
--- 项目路径下的美术资源文件夹(../animation/sprite)
--- 项目路径下的Unity预制件文件夹(../Modules/Sprite)
--- 基本功能逻辑流程
--- 获取美术资源文件夹地址
--- 默认项目路径下的美术资源文件夹(../animation/sprite)
--- 默认项目路径下的Unity预制件文件夹(../Modules/Sprite)
--- 检索美术资源源文件夹下所有文件
--- 检查同名文件下是否包含( .atlas.txt/.skel.bytes/.png/_Atlas.asset/_Material/_SkeletonData.asset)
--- 缺少对应文件打印错误信息
--- 生成错误文本(时间 + ".txt")
--- 把错误信息写入错误文本
--- 跳过该文件
--- 检查项目路径下的美术资源文件夹下所有文件
--- 检查源文件夹中对应同名文件是否齐全,应包含( .atlas.txt/.skel.bytes/.png/_Atlas.asset/_Material/_SkeletonData.asset)
--- 文件缺失
--- 从源文件夹下复制该文件到目标文件夹
--- 文件齐全
--- 创建对应文件名.prefab文件到项目路径下的Unity预制件文件夹(../Modules/Sprite)
--- 资源设置绑定
--- 设置Rect Trasform 的 position X,Y,Z为0,Width,Height 为 100,Scale为1
--- 添加脚本组件(Skeleton Graphic)
--- 通过该资源名找到项目路径下的美术资源文件夹目录的同名_SkeletonData.asset("1231545"+_SkeletonData.asset)
--- 绑定到脚本组件(Skeleton Graphic)下的Skeleton Data Asset下
--- 绑定完成后打印完成信息(name+".prefab绑定完成")
--- 退出功能
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---扩展功能逻辑流程
--- 指定操作绑定Unity预制件
--- 索引项目路径下的美术资源文件夹
--- 找到指定文件名("123456231")
--- 创建对应Unity 预制件("123456231" + ".prefab")
--- 进入资源设置绑定逻辑
--- 大批量更新
--- 找到美术资源源文件夹(UI文件)
--- 检索美术资源源文件夹下所有文件
--- 检查同名文件下是否包含( .atlas.txt/.json/.png/_Atlas.asset/_Material/_SkeletonData.asset)
--- 缺少对应文件打印错误信息
--- 生成错误文本(时间 + "大批量更新错误.txt")
--- 把错误信息写入错误文本
--- 中断程序运行
--- 找到项目路径下的美术资源文件夹(../animation/sprite)
--- 清空所有文件
--- 找到项目路径下的Unity预制件文件夹(../Modules/Sprite)
--- 清空所有文件
--- 进入基本功能逻辑流程
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
具体实现
using System;
using System.IO;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
/// <summary>
/// author:pigsohappy(CSDN论坛名)
/// 功能需求:
/// 针对美术资源引用需求做的小工具,还可以继续优化添加功能
///
/// 准备工作:
/// 使用前请手动修改 ArtResource(美术资源文件夹) aimFile(项目内存放文件夹第一层Resources目录下) preFile(项目内保存预制的文件夹)
///
/// 工具入口:
/// Unity窗口工具栏Tools/ArtResource
///
/// 具体功能:
/// Examine(检查导入)直接从美术资源目录导入到工程内目标目录(.png,.atlas.txt,.skel.bytes三种格式文件。注意:扩展名不符合将不会被导入项目工程内)
/// UpData(更新生成预制)根据项目内目标文件夹的Png文件Id创建同名预制,并且绑定同名的"_SkeletonData"文件
/// Browse(浏览对比美术资源)判断美术资源目录的同id的(.png,.atlas.txt,.skel.bytes三种格式文件)数量、ID是否相同,生成检查和错误日志。
/// </summary>
public class ArtTools : Editor //继承于UnityEditor类
{
//统一创建资源路径
//美术资源
class ResourcePath
{
public string ArtResource = @"E:\UI文件\角色";
public string aimFile = @"E:\pro\Resources\123";
public string preFile = @"E:\pro\Assets\Modules\prefab";
public string [] Pngfiles = Directory.GetFiles(@"E:\UI文件\角色", "*.png", SearchOption.AllDirectories);
public string [] AssetFiles = Directory.GetFiles(@"E:\UI文件\角色", "*.atlas.txt", SearchOption.AllDirectories);
public string [] SkelFiles = Directory.GetFiles(@"E:\UI文件\角色", "*.skel.bytes", SearchOption.AllDirectories);
public string ReportPath = @"E:\pro\Resources\logrecord\";
}
//项目内资源目录
class PrefabFile
{
public string[] Png = Directory.GetFiles(@"E:\pro\lzClientDemo1\Assets\LZ\Resources\123", "*.png", SearchOption.AllDirectories);
public string[] Asset = Directory.GetFiles(@"E:\pro\lzClientDemo1\Assets\LZ\Resources\123", "*.atlas.txt", SearchOption.AllDirectories);
public string[] Skel = Directory.GetFiles(@"E:\pro\lzClientDemo1\Assets\LZ\Resources\123", "*.skel.bytes", SearchOption.AllDirectories);
public string[] SkeletonFile = Directory.GetFiles(@"E:\pro\lzClientDemo1\Assets\LZ\Resources\123", "*_SkeletonData.a