优化版UGUI打图集代码

2024-02-11 14:58
文章标签 代码 优化 图集 ugui

本文主要是介绍优化版UGUI打图集代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先是代码的原版,雨松MOMO的博客
http://www.xuanyusong.com/archives/3304
雨松MOMO 2014年10月24日 于 雨松MOMO程序研究院 发表

代码很好用,但在使用过程中,遇到了一点问题。即便精灵图没发生改变,代码每次生成出来的Prefab文件都会发生细微的改变,提交版本库的时候,每次都要提交所有的Prefab,而且过时的Prefab没有被删除,于是自己在原代码的基础上加以改进,忽略了没有变化的Prefab,并删除了过时的Prefab,废话不多说,贴上代码。

using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;public class AtlasMaker {[MenuItem("MyMenu/AtlasMaker")]static private void MakeAtlasTest(){string spriteDir = Application.dataPath + "/Resources/Sprite";DirectoryInfo prefabDir = new DirectoryInfo(spriteDir);Dictionary<string,string> prefabDict = new Dictionary<string, string>();Dictionary<string, string> prefabDictRemain = new Dictionary<string, string>();foreach (var fileInfo in prefabDir.GetFiles("*.prefab", SearchOption.AllDirectories)){prefabDict[fileInfo.Name.Replace(".prefab", "")] = fileInfo.FullName;prefabDictRemain[fileInfo.Name.Replace(".prefab", "")] = fileInfo.FullName;}foreach (var dir in prefabDir.GetDirectories()){foreach (var fileInfo in dir.GetFiles("*.prefab", SearchOption.AllDirectories)){prefabDict[fileInfo.Name.Replace(".prefab", "")] = fileInfo.FullName;prefabDictRemain[fileInfo.Name.Replace(".prefab", "")] = fileInfo.FullName;}}if (!Directory.Exists(spriteDir)){Directory.CreateDirectory(spriteDir);}DirectoryInfo rootDirInfo = new DirectoryInfo(Application.dataPath + "/Atlas");foreach (DirectoryInfo dirInfo in rootDirInfo.GetDirectories()){foreach (FileInfo pngFile in dirInfo.GetFiles("*.png", SearchOption.AllDirectories)){string allPath = pngFile.FullName;string assetPath = allPath.Substring(allPath.IndexOf("Assets"));Sprite sprite = AssetDatabase.LoadAssetAtPath<Sprite>(assetPath);GameObject go;if (prefabDict.ContainsKey(sprite.name)){string path = prefabDict[sprite.name].Substring(prefabDict[sprite.name].IndexOf("Assets"));go = AssetDatabase.LoadAssetAtPath<GameObject>(path);prefabDictRemain.Remove(sprite.name);var spriteRed = go.GetComponent<SpriteRenderer>();if (spriteRed.sprite != sprite){spriteRed.sprite = sprite;}}else{go = new GameObject(sprite.name);go.AddComponent<SpriteRenderer>().sprite = sprite;allPath = spriteDir + "/" + sprite.name + ".prefab";string prefabPath = allPath.Substring(allPath.IndexOf("Assets"));PrefabUtility.CreatePrefab(prefabPath, go);GameObject.DestroyImmediate(go);}}}foreach (var remain in prefabDictRemain){string path = remain.Value.Substring(remain.Value.IndexOf("Assets"));AssetDatabase.DeleteAsset(path);}AssetDatabase.SaveAssets();}
}

这篇关于优化版UGUI打图集代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700083

相关文章

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S