Unity3D NGUI图集切成图片
2015-07-08 13:56
459 查看
Unity3D NGUI图集切成图片
有的时候用NGUI做好了图集,那么原图就没有必要放到Unity3D中了,严重影响Unity3D的速度。但是突然右想把图片弄出来。当然NGUI是提供了图集中单个图片另存,但是如果图片太多,比较费时间,所以用python写了个切图片的工具代码如下:Python环境:2.7 测试通过,需要依赖Image库
NGUI版本:3.7
#coding:utf-8 #unity 图集裁剪成png #Author:Wiker Yong #Date:2015-07-08 import os import sys import argparse import Image def middle(str='',left='',right=''): # print str.index(right,str.index(left)+1) return str[str.index(left)+len(left):str.find(right,str.find(left)+1)] parser = argparse.ArgumentParser(description='Unity Atlas cut to pngs') parser.add_argument("-f",dest='file',help='cut prefab,no ext name') parser.add_argument("-p",dest='path',help='Output path') args = parser.parse_args() out_path='' if args.path != None and not os.path.exists(args.path): os.makedirs(args.path) out_path = args.path if args.file == None: parser.print_help() sys.exit(0) prefab_path = args.filepng prefab_file = open(prefab_path+'.prefab') pngname='' x=0 y=0 w=0 h=0 while 1: line= prefab_file.readline() if not line: break; if line.startswith(' - name: '): pngname=middle(line,' - name: ','\r\n') if line.startswith(' x: '): x=int(middle(line,' x: ','\r\n')) if line.startswith(' y: '): y=int(middle(line,' y: ','\r\n')) if line.startswith(' width: '): w=int(middle(line,' width: ','\r\n')) if line.startswith(' height: '): h=int(middle(line,' height: ','\r\n')) print pngname,x,y,w,h img = Image.open(prefab_path+'.png') region = (x,y,w+x,h+y) cropimg=img.crop(region) cropimg.save(out_path+'/'+pngname+'.png')
后续再整个Unity反编译,还原成图片了,敬请关注!
相关文章推荐
- unity实现多点触控代码
- 在Unity中实现动画的正反播放代码
- unity实现摄像头跟随
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- [软件资讯]Unity已支持将3D游戏导出成Flash
- Unity 武器拖尾效果
- unity常见问题之20题
- Unity3D动画存储插件
- unity 赛车相机跟随物体移动
- Unity 预编译宏
- VS2013中 命名空间“UnityEngine”中不存在类型或命名空间名称“UI”。是否缺少程序集引用?
- Unity3D占用内存太大的解决方法
- 【Unity】安卓项目使用带有资源Jar包SDK的打包方法
- 在IOS APP中反复打开和关闭Unity页面
- Unity架构??
- Unity4.6.3,Android版本打包问题