Unity Sprite Atlas与Sprite Mask

Sprite Atlas

发现unity新版有图集,其实挺好用的
参考
https://mp.weixin.qq.com/s/yo3XiKpi6lJNH16MsJ-KUw
https://www.jianshu.com/p/bdd223184738
创建图集

image.png

这里面可以直接放文件夹,老图集,图
先看Variant 模式
image.png

然后拖一个新图集,相当于把传入的老图集粘贴一遍,调整Scale可以降低分辨率,为高低分辨率做不同的适配,mode改为Point模式
image.png

如果缩放以后不是2次幂就会有提示,不管就会性能倒贴


image.png

压缩了好多倍


image.png

image.png

这个是Editor调用代码 选一个文件或者一堆图生成
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.U2D;
using UnityEngine;
using UnityEngine.U2D;

public class AtlasTools
{
    const string atlasPath = "Assets/atlas.spriteatlas";

    [MenuItem("Tools/ChangeAtlasSetting", false, 1)]
    static void ChangeAtlasSetting()
    {
        //这个是Always Enabled 设置完SpriteAtlas才有Pack Preview 去看图集
        // ->  Enable For Builds:在打包时将规划好的小图打成图集
        //->  AlwaysEnabled:一直激活状态,总是将规划好的小图打成图集
        EditorSettings.spritePackerMode = SpritePackerMode.AlwaysOn;
    }
    [MenuItem("Tools/SetSpriteAtlas", true, 0)]
    static bool CreateAtlasJudgement()
    {
        if (Selection.objects.Length <= 0)
            return false;
        else
            return true;
    }

    [MenuItem("Tools/SetSpriteAtlas", false, 0)]
    static void CreateAtlas()
    {
        SpriteAtlas spriteAtlas = new SpriteAtlas();
        //选中以在构建中包含Atlas Asset。请注意,取消选中此选项会导致在播放模式期间不呈现任何打包的资产。
        //会导致打包冗余  取消后需要在代码中监听SpriteAtlasManager.atlasRequested事件来在程序中加载贴图集。
        //不然会导致AB包首个加载图片为空白 ResourceLoad没问题
        spriteAtlas.SetIncludeInBuild(false);
        SpriteAtlasPackingSettings packSetting = new SpriteAtlasPackingSettings()
        {
            //包偏移
            blockOffset = 1,
            //打包时是否支持包旋转
            enableRotation = false,
            //是否紧密打包
            enableTightPacking = false,
            //边界填充值
            padding = 2
        };
        spriteAtlas.SetPackingSettings(packSetting);

        SpriteAtlasTextureSettings textureSettings = new SpriteAtlasTextureSettings()
        {
            //是否开启读写
            readable = false,
            //Point分离过滤模式 点过滤 - 纹理像素变得块状近距离。
            //Bilinear双线性过滤 - 纹理样本的平均值。
            //Trilinear三线性过滤 - 对纹理样本进行平均,并在mipmap级别之间进行混合。
            filterMode = FilterMode.Bilinear,
            //是否启用mipmap
            generateMipMaps = false,
            //纹理存储在伽马空间中。
            sRGB = true
        };

        spriteAtlas.SetTextureSettings(textureSettings);


        TextureImporterPlatformSettings textureImporterPlatformSettings = new TextureImporterPlatformSettings()
        {
            //设置类型名字
            name = "Android",
            //是否重写
            overridden = true,
            //在不支持ETC2的手机上回退
            androidETC2FallbackOverride = AndroidETC2FallbackOverride.Quality16Bit,
            maxTextureSize = 1024,
            //压缩格式 用之前人家测试最好的手游压缩格式
            format = TextureImporterFormat.ASTC_RGBA_4x4,
            //纹理不会被压缩。未压缩的= 0,
            //摘要纹理将根据平台// (DXT, ASTC,…)使用标准格式进行压缩。Compressed= 1,
            //摘要纹理将根据平台和可用性(BC7, ASTC4x4,…)使用高质量的格式进行压缩。CompressedHQ = 2,
            //摘要根据平台和可用性(2bpp PVRTC, ASTC8x8,…),纹理将使用低质量但高性能、高压缩/格式进行压缩。CompressedLQ = 3
            textureCompression = TextureImporterCompression.CompressedHQ,
            //可使用时压缩
            crunchedCompression = true,
            //压缩纹理质量[0-100]
            compressionQuality = 50,
        };
        spriteAtlas.SetPlatformSettings(textureImporterPlatformSettings);
        spriteAtlas.Add(Selection.objects);

        AssetDatabase.CreateAsset(spriteAtlas, atlasPath);
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
    }
}

AB包加载和这个差不多

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.U2D;
using UnityEngine.UI;

public class Test : MonoBehaviour
{

    public Image image;
    private void OnEnable()
    {
        SpriteAtlasManager.atlasRequested += Request;
    }

    private void OnDestroy()
    {
        SpriteAtlasManager.atlasRequested -= Request;
    }

    private void Request(string tag, Action<SpriteAtlas> action)
    {
        SpriteAtlas sa = Resources.Load<SpriteAtlas>("atlas");
        image.sprite = sa.GetSprite("Mybackgr");
        action(sa);
    }
}
Sprite[] sprites = new Sprite[10];

uiSpriteAtlas.GetSprites(sprites, "head");

这样还能取多个名字一样的

https://www.cnblogs.com/TheChenLin/p/9763710.html
这个问题留着以后出了看

image.png

还有这个也是

Sprite Mask

这个就是图片遮罩
只能用在用不了在Image上
Inside是显示在图片里 Outside是显示在图片外


image.png

然后创建一个spriteMask父节点 出了范围就会被隐藏掉
Alpha Cutoff会影响Mash形状


image.png

粒子特效也可以设置
image.png

这里可以设置遮罩可以作用的范围
image.png

把一个order in layer改为5 就是不在范围内


image.png

然后另外一个就不显示了
image.png

把这个设置为灰度梯度后
image.png

image.png

拖动这个会有奇妙的效果
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

  • Sprite Atlas(精灵图集)Sprite Atlas 针对现有的图集打包系统Sprite Packer在性...
    JervieQin阅读 13,484评论 0 1
  • Atlas(图集) 在游戏开发中,图集是一种常见的性能优化,本篇将从原理,设置图集,及图集Bundle策略三方面介...
    _Youcai阅读 3,141评论 0 0
  • 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图...
    万忍阅读 1,500评论 0 6
  • 我们身处冗余的大数据时代,每天各种各样的信息扑面而来,对与我们来讲,在这个时代,我们改如何去阅读,而阅读的本质又是...
    小天先森阅读 170评论 0 0
  • 每次进出火车站,看着来来往往的人群,从他们的衣着、年龄、神情、步履,你大概可以了解他们的生活状态,大部分人都在赶路...
    贺华文PCC教练阅读 817评论 1 11