unity学习笔记之unity2017新功能:SpriteAtlas

之前对于unity得图集管理不是很了解,所以也无法做SpriteAtlas与之前的SpritePacker谁好谁坏的比较。但是按照更新就是对现有物体功能得升级来看,SpriteAtlas还是不错的,最起码对于不同性能得平台处理不同得分辨率图集来说SpriteAtlas得方便性完胜SpritePacker。

废话不多说下面进入正题:

No1.SpriteAtlas像大多数unity资源一样可以直接在Assets文件里面创建,在Project视图点击鼠标右键->Create->SpriteAtlas
unity学习笔记之unity2017新功能:SpriteAtlas_第1张图片
No2.在进行使用SpriteAtlas之前我们需要进行一步配置
选中我们创建得SpriteAtlas点击unity菜单栏 ->Editor->Project Setting->Editor
在这里插入图片描述

在Inspector视图出现如下面板
**unity学习笔记之unity2017新功能:SpriteAtlas_第2张图片
在SpritePacker选项上点击AlwaysEnable确保我们创建的SpriteAtlas一直可以被使用
在这里插入图片描述

No3.下面说下SpriteAtls得属性面板
unity学习笔记之unity2017新功能:SpriteAtlas_第3张图片
首先我们看下官方API 介绍

属性 介绍
Type 将Atlas的类型设置为Master或Variant。
Include in Build 选中以在构建中包含Atlas Asset。请注意,取消选中此选项会导致在播放模式期间不呈现任何打包的资产。
Allow Rotation 允许Sprite旋转以进行包装。
Tight Packing 在包装过程中使用Sprite轮廓来装配它们而不是矩形网格概述。
Padding 打包的Sprite纹理之间的额外填充量。
Read/Write Enable 设置为true以允许脚本可读/写纹理数据。设置为false以防止脚本读取/写入纹理数据。
Generate Mip Maps 选择此项以启用mipmap生成。
sRGB 纹理存储在伽马空间中。
Filter Mode 选择纹理的过滤方式。这将覆盖打包的Sprites的原始纹理设置。
Default Texture settings panel 设置默认选项(使用默认值),然后使用面板顶部的按钮覆盖特定平台。
Objects For Packing 选择要打包到Atlas中的对象。符合条件的对象可以是文件夹,纹理和精灵。

关于Type属性官方给出的解释是:
unity学习笔记之unity2017新功能:SpriteAtlas_第4张图片
解释:意思就是说你再次可以重新创建一个或多个SpriteAtlas (为了方便我们叫他们副本,之前创建的那个SpriteAtlas叫做原文件),把副本得Type属性选择为Variant,然后将之前原文件拖拽到副本的MasterAtlas上面。
做完这些操作之后,这些副本即表示是原文件的一个复制SpriteAtlas,在副本上得图集以及精灵和源文件上面的一模一样,他们得区别在于:副本含有一个Scale属性,这个属性得范围0-1,调整这个值会改变副本中图集以及精灵得清晰度。
在实际项目中我们可以根据不同性能得机器,选择不同Scale值得副本或者清晰度最高的原文件。

关于Include in Build
Include in Build的意思时当我们勾选的时候在我们发布项目的时候unity会把此图集打进资源包,例如发布安卓平台时如果勾选此选项,则在我们的APK中会包含此图集的包文件。
当我们使用了AssetsBundle打包时如果选择打包了此文件则不需要勾选此选项,避免多占用不必要的空间。

添加图集
unity学习笔记之unity2017新功能:SpriteAtlas_第5张图片
在Objects for Packing
上面上有一个加号,点击加号可以选择文件夹,Sprite,以及Texture 2D。
在选择文件夹时会把当前文件夹里面的Sprite以及Texture2D文件添加到SpriteAtlas

在我们选择图集使用的时候,脚本需要引用using UnityEngine.U2D;

private SpriteAtlas spriteAtlas;//创建SpriteAtls
private Sprite GetSpriteFormSpriteAtlas(string spriteName)
{
    return spriteAtlas.GetSprite(spriteName);//得到名称为spriteName的sprite
}

如果我们打成AB包可以选择 回调得到并改变UI的sprite

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

public class tet : MonoBehaviour
{

    private SpriteAtlas spriteAtlas;


    public Image image;
    private void Start()
    {
        RequestAtlas("sa.unity3d", ShowAtlas);
    }

    void RequestAtlas(string tag, System.Action callback)
    {
        var ab = AssetBundle.LoadFromFileAsync(Path.Combine(Application.streamingAssetsPath,tag));
        string name = tag.Split('.')[0];
        var sa = ab.assetBundle.LoadAsset(name);
        callback(sa);
    }


    void ShowAtlas(SpriteAtlas spriteAtlas)
    {
        image.sprite = spriteAtlas.GetSprite("3333");
    }
}

你可能感兴趣的:(unity3d笔记)