unity图集在ios下需要压缩吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity图集在ios下需要压缩吗相关的知识,希望对你有一定的参考价值。

没硬性规定说要遵循2条件遵循没
1 图片要2幂比128X128, 256X256128X256 ,512X512等等遵循没UNITY3D自帮调整2幂

2 图片越数据量越所要尽量控制影响效前提越越WINDOWS图片支持4096X4096ios支持2048X2048IOS屏幕像素没所图片太没意义拜拜浪费电脑资源
参考技术A Team License协同开发系统Team License可以安装在任何Unity里,新增的界面可以方便用来进行团队协同开发。其中包含两大模块,Unity资源服务器(Unity Asset Server)与Unity快取服务器(Unity Cache Server)。资源服务器用来负资项目的模型、贴图、音效、视频与代码版本管理;快取服务器是用来进行抓取团队成员任何实时的更州言息,避免不同人员重复不停的传送同样版本的资源至服务器,维持共用资源的稳定与快速反应其中的变化,过长的反应更新时间将会影响团队协同开发的正确性与效率。可视化脚本语言uScript可视化脚本编辑语言uScript,具有高度的友好界面、整合性高、功能强大、修改容易等特点。开发者只祷将集成的功能模块用连线的方式,通过逻辑关系将模块连接,即可快速创建所铸脚本功能,非常适合非编程人员与项目制作使用。Substance高写真动态材质模块Substance是一个功能强大的工具,通过任何的普通位图图像,直接生成高品质的次时代游戏设计专用材质(法线图,高度图,反射贴图等》,为DCC工具或游戏引擎(如Unity3D)提供高级的渲染效果。其中实时渲染器可以自动从原始图像中提取法线,高光或环境光遮蔽图。只需点击鼠标就可生成无缝的材质拼接效果,并可以随机的让材质发生无限的变化。Substance提供一套全面完整的参数面板编辑器,您可以通过材质面板而调整并展现您材质的详细细节。 查看原帖>>

Unity3d通用工具类之NGUI图集分解

---恢复内容开始---

Unity3d通用工具类之NGUI图集分解

由于最近需要一些美术资源吗,但是无奈自己不会制作UI,所以就打算去网上的项目中直接找几张可以使用的贴图资源。

 

但是发现这些资源已经被NGUI自带的打包图集工具打包好了,而且原小贴图也已经全部删掉了,只剩下一个预制物。

 

那么这个预制物里面包含什么呢:

1.一张大图集贴图

2.大贴图的材质球

3.挂上UIAtla脚本的预制物

那么重点来了,我们该如何获取这张大贴图中的小贴图呢?

 

这里我写了个小插件,我直接在NGUI源代码里面改:

找到NGUI的源代码:UIAtlasMaker

在OnGUI方法里面,我新添加了可以导出贴图的代码:

 

            GUILayout.BeginHorizontal();
            {
                if (tex != null)
                {
                    if (GUILayout.Button("导出贴图(PNG)",GUILayout.Width(120f)))
                    {
                        string filePath = EditorUtility.SaveFolderPanel("保存贴图到指定文件夹","","");
                        ExportTexturePNGFromAtlas(filePath, NGUISettings.atlas);
                    }
                }
            }
            GUILayout.EndHorizontal();

ExportTexturePNGFromAtlas():

 

    static void ExportTexturePNGFromAtlas(string folderPath,UIAtlas atlas)
    {
        List<UISpriteData> exitSpritesList = atlas.spriteList;
        Texture2D atlasTexture = NGUIEditorTools.ImportTexture(atlas.texture, true, false, !atlas.premultipliedAlpha);
        int oldwith = atlasTexture.width;
        int oldHeight = atlasTexture.height;
        Color32[] oldPixels = null;
        foreach (var es in exitSpritesList)
        {
            int xmin = Mathf.Clamp(es.x, 0, oldwith);
            int ymin = Mathf.Clamp(es.y, 0, oldHeight);
            int newWidth = Mathf.Clamp(es.width, 0, oldwith);
            int newHeight = Mathf.Clamp(es.height, 0, oldHeight);
            if (newWidth == 0 || newHeight == 0) continue;
            if (oldPixels == null) oldPixels = atlasTexture.GetPixels32();
            Color32[] newPixels = new Color32[newWidth * newHeight];
            for (int y = 0; y < newHeight; ++y)
            {
                for (int x = 0; x < newWidth; ++x)
                {
                    int newIndex = (newHeight - 1 - y) * newWidth + x;
                    int oldIndex = (oldHeight - 1 - (ymin + y)) * oldwith + (xmin + x);
                    newPixels[newIndex] = oldPixels[oldIndex];
                }
            }
            Texture2D t = new Texture2D(newWidth, newHeight);
            t.SetPixels32(newPixels);
            t.Apply();
            byte[] bytes = t.EncodeToPNG();
            Texture2D.DestroyImmediate(t);
            t = null;
            if (!Directory.Exists(folderPath))
            {
                Directory.CreateDirectory(folderPath);
            }
            using (FileStream fs = new FileStream(folderPath + "/" + es.name + ".png", FileMode.CreateNew))
            {
                BinaryWriter writer = new BinaryWriter(fs);
                writer.Write(bytes);
            }
        }
    }

打开NGUI的Atlas Maker:

 点击导出贴图,然后会弹出选择保存贴图到哪个文件夹,点击选择文件夹之后,小贴图就导出成功了。

 

 

以上是关于unity图集在ios下需要压缩吗的主要内容,如果未能解决你的问题,请参考以下文章

Unity3d通用工具类之NGUI图集分解

unity图集的使用(万能方法)

unity图集的使用(万能方法)

unity图集的使用(万能方法)

unity图集的使用(万能方法)

Unity 利用UGUI打包图集,动态加载sprite资源