unity3d怎么查看图集_unity3d图集 - CSDN
  • 1、将所需要的图片导入Unity中,注意不能放在Resources文件夹下 2、选择需要打包成图集的图片(可以多选)在inspector面板里选择“Texture Type“为“Sprite (2D and UI)”,并Apply应用 3、在”Packing Tag”...

    1、将所需要的图片导入Unity中,注意不能放在Resources文件夹下

    2、选择需要打包成图集的图片(可以多选)在inspector面板里选择“Texture Type“为“Sprite (2D and UI)”,并Apply应用

    3、在”Packing Tag”选项里面填上图集的名称,该选项相同的图片会打包为同一个图集

    4、选择菜单栏里面的 "Edit" -> "Project Settings" -> "Editor"

    5、在inspector面板里设置“Sprite Packers”下面的“Mode”选项,其中,“Disabled”表示关闭图集功能,“Enabled for Builds”表示打包发布时才打包图集,“Always Enable”表示始终打包图集,

    6、设置完上述选项后,可以在 “Window ” -> “Sprite Packers”面板里预览图集,如果发现还没有显示图集,可能是还未来得及更新,可尝试点击左上角的“Pack”按钮立即打包

    7、需要代码动态加载图集里面的图片时,可以使用UnityEditor.AssetDatabase.LoadAssetAtPath方法,详细参见官方API文档


    注意:图集的打包过程有Unity自动完成,除上述步骤外,不需要再做其他操作,经测试,图集里面的图片只会有同一个draw call


    2016年9月13日修改,UnityEditor.AssetDatabase.LoadAssetAtPath是编辑器代码,不允许被打包,经过测试,在电脑端是可以吧图片放在Resources文件夹下的,别的平台没有测试过。


    2016年9月26日修改,上次修改中说电脑端可以吧图片放在Resources文件夹,经过测试发现,可以是可以,但是不会被打包进图集(这里时其他一些教程理说的比较模糊的地方),也就是说DrawCall还是一张图片一个。



    2016年10月14日修改,关于代码中加载图集中的图片,宣雨松的这篇文章有比较好的解决方案

    展开全文
  • Unity3d打包图集

    2019-07-15 13:25:17
    1、使用图集的好处: 使用图集可以减少drawcall,提升效率。 2、什么是drawcall? 游戏中的图片模型最终是要给到显卡去渲染的,图片开始是要从硬盘读到内存里面去的,然后CPU通知GPU要开始渲染,这一次通知就是一...

    1、使用图集的好处:
    使用图集可以减少drawcall,提升效率。
    2、什么是drawcall?
    游戏中的图片模型最终是要给到显卡去渲染的,图片开始是要从硬盘读到内存里面去的,然后CPU通知GPU要开始渲染,这一次通知就是一次Drawcall。通知就要通信,还要把数据扔过去,肯定是要耗性能的。
    3、UGUI打包并使用图集有3种方法:
    a、一种是使用系统自带的打包工具SpritePacker;
    Unity2017带来了新的SpriteAtlas工具,该工具可以方便的将碎图打包成纹理集,相比于之前SpritePacker工具,SpriteAtlas将统一的管理纹理集,不必再到每个碎图上查看被打包到了哪个纹理集,并且解除了sprite使用者和纹理集的强依赖关系。
    (不错的一篇文章http://ju.outofmemory.cn/entry/327718)
    b、一种是使用TexturePacker打包图片并使用;
    在打包图集的时候,最好按照公用的放在public ,其他的按照功能进行打包。
    使用这个工具需要下载并导入一个Unity3d的插件,TexturePacker自己出的的一个插件TexturePacker Importer,(插件链接https://www.assetstore.unity3d.com/en/#!/content/16641),下载并成功导入之后,不用写任何代码,作任何操作,插件会自己根据.tpsheet,将刚才打包好放进入工程的大图自动裁剪成小图。
    在这里插入图片描述

    c、一种是Unity2017版本之后的的图集对象SpriteAltas
    (1)Sprite Atlas 创建图集
    在这里插入图片描述
    (2)选中需要帮你设置打包图集的Edit ,Edit——>Project Settings——>Edit——>Mode 选择Always Enabled
    在这里插入图片描述
    在这里插入图片描述
    (3)点击+选择你想要的文件夹,然后pack preview。
    在这里插入图片描述
    注意这个bag文件夹中每个图片的Texture Type都是Sprite(2D and UI)
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190715105656141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDgxOTIyMA==,size_16,color_FFFFFF,t_70

    展开全文
  • Unity3D NGUI图集切成图片有的时候用NGUI做好了图集,那么原图就没有必要放到Unity3D中了,严重影响Unity3D的速度。但是突然右想把图片弄出来。当然NGUI是提供了图集中单个图片另存,但是如果图片太多,比较费时间,...

    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反编译,还原成图片了,敬请关注!

    展开全文
  • 在main函数里直接赋值文件夹(会递归文件夹内的所有文件夹),在每个子文件夹内会自动切分unity3d atlas图集。但是目录下需要有prefab png文件。
  • Unity3D图集打包 老打包方法 新打包方法 加载图集 老图集加载处理 新图集加载处理 两种图集的区别

    Unity3D图集打包

    开启图集打包功能
    Edit->Project Settings->Editor->Sprite Packer
    在这里插入图片描述

    老打包方法

    其中Enabled For Builds(Legacy Sprite Packer)和Always Enabled(Legacy Sprite Packer)可开启老打包图集,前者是在打成相应平台包的时候打图集,后者是可在Editor运行的时候打图集。

    1. 设置好图集打包模式后:Enabled For Builds(Legacy Sprite Packer)或Always Enabled(Legacy Sprite Packer)
    2. 确认所有的图片必须是Sprite(2D and UI)的纹理格式
    3. 给需要打成一个图集的Sprite设置相同的Packing Tag
      在这里插入图片描述
    4. Window->2D->Sprite Packer

    在这里插入图片描述
    通过以上方法可将所有设置了相同Packing Tag的图片打包到一个图集上去

    扩展问题:
    1.如何快速的设置PackingTag,或者说按文件夹名来设置文件夹中的所有图片的Packing Tag?

    新打包方法

    1. 设置好图集打包模式后:Enabled For Builds或Always Enabled
    2. 在Project视窗
      在这里插入图片描述
    3. 创建好Sprite Atlas后,命名为Atlas01
    4. 在Objects for Packing中选择,可以选择类型有Sprite、Texture或Folder
    5. 点击Pack Preview后,可在下方看到相应打包好的图集
      在这里插入图片描述

    加载图集

    老图集加载处理

    1. 因为老图集虽然做了优化,但是不方便使用,这里我们采用Prefab的方法进行管理图集资源。
    2. 在Resources目录下创建一个空的Prefab,名字自取(最好与图集名相同,便于管理)
    3. 创建一个AssetList脚本,挂在创建的Prefab上
    using UnityEngine;
    
    public class AssetList: MonoBehaviour
    {
        public Object[] list;
    }
    
    1. 编辑Prefab上的AssetList脚本,设置Size大小,同时将图片Obj拖入,编辑好后保存。(此处有个小坑:拖图片Obj的要确认是Sprite类型的,否则后面加载不出来)
      在这里插入图片描述
      在这里插入图片描述
    2. 还是使用Resources动态加载,创建脚本OldSpriteAtlas,并挂在带有Image组件的物件上
    using UnityEngine;
    using UnityEngine.UI;
    
    public class OldSpriteAtlas : MonoBehaviour
    {
        private Image img;
        // Start is called before the first frame update
        void Start()
        {
            img = this.GetComponent<Image>();
            GameObject assetGo = Resources.Load<GameObject>("Animal01");
            AssetList assetList = assetGo.GetComponent<AssetList>();
            Sprite firstSprite = assetList.list[0] as Sprite;
            if (firstSprite != null)
            {
                img.sprite = firstSprite;
            }
        }
    }
    
    
    1. 运行,即可看到相应的图片被动态加载出来了。

    扩展:是否能否通过图集名来访问prefab中图集的索引,更利于使用?

    新图集加载处理

    1. 将上面Atlas01放入Resources文件夹中,采用Resources来进行动态加载
    2. 创建脚本NewSpriteAtlas,并挂在带有Image组件的物件上
    using UnityEngine;
    using UnityEngine.U2D; //注意引入此命名空间
    using UnityEngine.UI;
    public class NewSpriteAtlas : MonoBehaviour
    {
        private Image img;
        void Start()
        {
            img = this.GetComponent<Image>();
            SpriteAtlas atlas01 = Resources.Load<SpriteAtlas>("Atlas01");
            if(atlas01!=null)
            {
                img.sprite = atlas01.GetSprite("Img2");
            }
        }
    }
    
    

    3.运行,即可看到相应的图片被动态加载出来了。


    还在持续完善…如有错误,还请指正。

    展开全文
  • Unity3D 图集分割

    2015-09-08 14:20:41
    转载请注明出处:http://blog.csdn.net/hongyouwei/article/details/45011315)在我们找...那么问题就来了,怎么切割呢,现在我们提供一张小图片(注意了,一般Unity里面要求的图片宽高最好是4的整数倍比如128*128),
  • unity3d之读取图集图片

    2019-10-27 22:01:15
    点击按钮更换箭头所示图片 脚本代码: using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.EventSystems;...using System.Collections.Generic;...public class Script_05_...
  • 学习使用 TexturePacker 为 Unity 制作图集以节省性能,并提供动态加载加载函数 Unity图集制作插件-TexturePacker图文教程 为新手节省宝贵的时间,避免采坑! 简单说就是:将大量的小图,合并到一张大图上,可以有效...
  • 在用UGUI时,我们也需要将一个个小图打包成图集,以减小Drawcall(类似coco2d-x一样,打包成图集一次性加载以内存换取图片读取效率),UGUI打包并使用图集有两种方法:一种是使用系统自带的打包工具 SpritePacker;...
  • 制作图集的好处:众所周知CPU是用来处理游戏的逻辑运算的,而GPU是用来处理游戏中图像的。在GPU中,我们要绘制一个图像需要提交图片(纹理)到显存,然后再进行绘制(在这个过程中会产生一次DrawCall),也就是说我们...
  • 现在Unity中使用UGUI实现UI的越来越多,我们项目也才4.6.1升级到5.6.3对项目全面升级。5.x中UGUI已经非常成熟,各种资料各种效果都非常多。由于之前一直习惯用NGUI在使用UGUI还是比较顺利的,都是一个作者写的都是...
  • 一:准备若干图片 ... ... 这时要对Atals图集命名,设置存放路径 ...注意最好先创建一个存放Atlas图集的文件夹来储存图集即可。...四:创建好会出现3个文件, 图集就创建好了,蓝色框框就是图集,同时这个图集也是个...
  • 很多时候我们需要美术把贴图合并为一张贴图,现在在unity3d里通过几行代码就可以轻松完成(注释:今天查看API时发现的没想到如此好用),查看unity3dAPI你会发现Texture2D有个 Texture2D.PackageTextures的API 这...
  • 在U3d中,UGUI使用Sprite2D格式,NGUI则需要打包成Atlas图集,使用TexturePackerGUI打包Ngui图集,资源占用较少,性能较高。TexturePacker最终将生成2个文件一个图集文件,一个存放图集中图片坐标的txt文件。这里...
  • 在公司时间也不短了,前几天才自己负责一个小项目练手,遇到了图集等问题(NGUI),记录如下,权当备忘。若以后还有问题会持续更新,吃了螃蟹就得长记性! 1 创建项目时要新建自己的图集,不要借用NGUI自带的图集,...
  • Unity3d 切分图集

    2019-11-21 20:53:15
    参考:... import os import sys import argparse from PIL import Image import re def middle(str='',left='',right=''): # print str.index(right,str...
  • 2018年什么游戏最火? 不用问,肯定是人人都在撸的“王者荣耀”和吃鸡游戏了。...Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综...
  • 不管NGUI还是UGUI,图集都是在制作期间就生成了的,运行时是一张大图,这样做的好处在于我们可以在一定程度上去合并批次,但是图集通常在制作过程中,会分成commonatlas和系统atlas两类,一个界面prefab至少会用到两...
  • TexturePacker
  • Unity3d不久之前正式发布了Unity3d 2017.1, 这个版本的发布也宣告了Unity3d正式告别了5.x时代,并且开始已年份直接命名,开启了新的纪元。那么Unity3d 2017相较上一版本到底有哪些改进呢?这介绍这些改进之前先放出...
1 2 3 4 5 ... 20
收藏数 2,404
精华内容 961
关键字:

unity3d怎么查看图集