2022-04-30 Unity核心2——Sprite

2023-11-17


​ 顾名思义,Sprite Editor 就是精灵图片编辑器,它主要用于编辑 2D 游戏开发中使用的 Sprite 精灵图片

​ 它可以用于编辑,图集中提取元素,设置精灵边框,设置九宫格,设置轴心(中心)点等等功能

​ 新版本 Unity 需要安装 2D Sprite 包才能使用 Sprite Editor

​ 点击 Sprite Editor,进入编辑模式

一、Single 图片编辑

(一)Sprite Editor

​ 基础图片设置(右下角窗口)

​ 主要用于设置单张图片的基础属性

  1. Name:图片名字
  2. Position:在图片中的偏移位置和宽高。单张图片无法设置,默认左下角位置为 (0, 0)
  3. Border:边框,用于设置九宫格的 4 条边
  4. Pivot:轴心(中心)点位置
  5. Pivot Unit Mode:轴心点单位模式
    • Normalized:标准化模式,0 ~ 1 表示百分比
    • Pixels:像素模式
  6. Custom Pivot:自定义轴心点,Pivot 为 Custom 时可以设置

(二)Custom Outline(决定渲染区域)

​ 自定义边缘线设置,可以自定义精灵网格的轮廓形状

​ 默认情况下不修改都是在矩形网格上渲染,边缘外部透明区域也会被渲染,浪费性能

​ 使用自定义轮廓,可以调小透明区域,提高性能

  1. Snap:将控制点贴在最近的像素周围
  2. Outline Tolerance:轮廓点的复杂性和准确性,0 ~ 1,值越大轮廓点越多,越准确
  3. Generate:根据 Outline Tolerance 生成网格轮廓

​ 我们也可以手动添加点,自定义编辑点的位置,从而手动控制网格

(三)Custom Physics Shape(决定碰撞判断区域)

​ 自定义精灵图片的物理形状,主要用于设置需要物理碰撞判断的 2D 图形,它决定了之后产生碰撞检测的区域

​ 和 Custom Outline 设置类似,但设置的是物理碰撞的网格

(四)Secondary Textures(为图片添加特殊效果)

​ 次要纹理设置,可以将其它纹理和该精灵图片关联,着色器可以得到这些辅助纹理然后用于做一些效果处理,让精灵应用其它效果

​ 需要结合 Shader 使用

二、Multiple 图片编辑

​ Multiple 图集元素分割

​ 当我们的图片资源是图集时,我们需要在设置时将模式设置为 Multiple,这时我们可以使用 Sprite Editor 自带的功能进行图集元素分割

​ 打开 Sprite Editor,可看见如下界面。左上角的 Slice 表示如何对该图进行分割,其中的 Type 表示 Unity 切割该图片的类型

(一)Automatic:自动切割(常用)

  1. Pivot:单张图片轴心点的位置
  2. Custom Pivot:自定义轴心点
  3. Method:如何处理现有对象
    • Delete Existing:替换掉已经选择的矩形
    • Smart:尝试创建新矩形同时保留或调整现有的矩形
    • Safe:添加新矩形而不更改任何已经存在的矩形

(二)Grid By Cell Size:按单元格大小分割

  1. Pixel Size:单元格宽高
  2. Offset:偏移位置
  3. Padding:盒边缘的偏移位置
  4. Keep Empty Rects:是否保留空矩形
  5. Pivot:单张图片轴心点的位置
  6. Custom Pivot:自定义轴心点
  7. Method:如何处理现有对象
    • Delete Existing:替换掉已经选择的矩形
    • Smart:尝试创建新矩形同时保留或调整现有的矩形
    • Safe:添加新矩形而不更改任何已经存在的矩形

(三)Grid By Cell Count:按行列数分割

  1. Column & Row:行数和列数
  2. Offset:偏移位置
  3. Padding:盒边缘的偏移位置
  4. Keep Empty Rects:是否保留空矩形
  5. Pivot:单张图片轴心点的位置
  6. Custom Pivot:自定义轴心点
  7. Method:如何处理现有对象
    • Delete Existing:替换掉已经选择的矩形
    • Smart:尝试创建新矩形同时保留或调整现有的矩形
    • Safe:添加新矩形而不更改任何已经存在的矩形

​ 同时,我们也可以自己在主图上画出一个矩形进行手动切割

:切割去除图片矩形边缘多余的透明区域

三、Polygon 多边形编辑

​ 如果我们使用的资源时多边形资源,我们可以在设置时将模式设置为 Polygon,然后可以在 Sprite Editor 中进行快捷设置

  • Slides:多边形边数

​ 在设置完多边形后,Polygon 模式下会自动帮我们设置渲染区域 Custom Outline

​ 但是一般这种模式在实际开发中使用较少,因为规矩的多边形很少用到

四、Sprite Renderer 精灵渲染器

​ 所有 2D 游戏中游戏资源(除 UI 外)都是通过 Sprite Renderer 让我们看到的,它是 2D 游戏开发中的一个极为重要的组件

​ 2D 对象创建的方法:

  • 直接拖入 Sprite 图片
  • 右键创建 Sprite
  • 空物体添加脚本

(一)参数介绍

  1. Sprite:渲染的精灵图片

  2. Color:定义着色,一般没有特殊需求不会修改

  3. Flip:水平或竖直翻转精灵图片

  4. Draw Mode:

    • Simple:简单模式,缩放时整个图像一起缩放

    • Sliced:九宫格切片模式,十字区域缩放,四个角不变化,一般用于变化不大的纯色图,类似 UGUI 中 Image 的 Sliced

      (需要把精灵的网格类型 Mesh Type 设置为 Full Rect)

    • Tiled:平铺模式,将中间部分进行平铺而不是缩放

      (需要把精灵的网格类型 Mesh Type 设置为 Full Rect)

      • Tile Mode:平铺模式

        Continuous:当尺寸变化时,中间部分将均匀平铺

        Adaptive:当尺寸变化时,类似 Simple 模式,当更改尺寸达到 Stretch Value 时,中间才开始平铺

    • Size:缩放大小,仅当 Draw Mode 为 Sliced 或 Tiled 才显示

  5. Mask Interaction:与精灵遮罩交互的方式

    • None:不与场景中任何精灵遮罩交互
    • Visible Inside mask:精灵遮罩覆盖的地方可见,而遮罩外部不可见
    • Visible Outside mask:精灵遮罩外部的地方可见,而遮罩覆盖处不可见
  6. Sprite Sort Point:计算摄像机和精灵之间距离时,使用精灵中心点 Center 还是轴心点 Pivot,一般情况下不修改

  7. Material:精灵材质

    可以使用一些自定义材质来显示一些特殊效果,一般不用修改

    默认材质是不会受到光源影响的,如果想要受光照影响,可以设置为 Default

  8. Additional Settings:额外设置

    • Sorting Layer:所在排序层
    • Order in Layer:排序层的序号

    也可以直接修改 Sprite 的 Z 轴,因为 2D 游戏中摄像机的模式是正交 Orthographic 的,但修改 Z 轴的优先级小于 Sorting Layer

(二)代码示例

GameObject     obj = new GameObject();
SpriteRenderer sr  = obj.AddComponent<SpriteRenderer>();

// 动态的改变图片
sr.sprite = Resources.Load<Sprite>("dead1");

// 动态的加载 图集中的图
Sprite[] sprs = Resources.LoadAll<Sprite>("RobotBoyIdleSprite");
sr.sprite = sprs[10];
五、Sprite Creator 精灵创造者

​ 我们可以利用 Sprite Editor 的多边形工具创造出各种多边形,Unity 也为我们提供了现成的一些多边形,它的主要作用是 2D 游戏的替代资源

​ 在等待美术出资源时我们可以用他们作为替代品,有点类似 Unity 提供的自带几何体,替代资源是做 demo 和学习时的必备品

​ 在 Project 窗口右键创建各种形状的 Sprite 精灵图片


​ 这里的精灵图片都是 Polygon 类型,通过设置边的个数来控制其形状

六、Sprite Mask 精灵遮罩

​ Sprite Mask 是精灵遮罩的意思,它的主要作用就是对精灵图片产生遮罩,制作一些特殊的功能,比如只显示图片的一部分让玩家看到

​ Sprite 有颜色的部分会作为遮罩,透明的部分不会

  1. Sprite:遮罩图片

  2. Alpha Cutoff:如果 Alpha 包含透明区域和不透明区域之间的混合(半透明),则可以手动确定所显示区域的分界点(0 ~ 1)

    小于 Alpha Cutoff 的部分不会被显示

  3. Custom Range:自定义遮罩范围

    Font 和 Back 可以定义遮罩影响的层级,遮罩影响的范围是 Back ~ Font 之间,超出这个范围的层级的 Sprite 不会受遮罩影响

  4. Sprite Sort Point:计算摄像机和遮罩之间距离时,使用精灵中心点 Center 还是轴心点 Pivot,一般情况下不修改

七、Sorting Group 排序分组

​ Sorting Group 是排序分组的意思,它的主要作用就是对多个精灵图片进行分组排序

​ Unity 会将同一个排序组中的精灵图片一起排序,就好像他们是单个游戏对象一样

​ 主要作用是对于需要分层的 2D 游戏用于整体排序

  • 添加三个空物体,分别为 Top、Mid、Bot,表示三个层级,为三者都添加 Sorting Group 组件
  • 将 Top 的 Order in Layer 设置为 2,Mid 的 Order in Layer 设置为 1,Bot 的 Order in Layer 设置为 0
  • 这时,Top 的子物体将显示在最前面,Bot 的子物体将显示在最下面,Mid 的子物体将显示在二者中间

​ 注意:

  • 子排序组,先排子对象,再按父对象和别人一起排 (同层和同层比)
  • 多个挂载排序分组组件的预设体之间,通过修改排序索引号来决定前后顺序
八、Sprite Atlas 制作图集

​ 打图集的目的就是减少 DrawCall,提高性能

​ 在工程设置面板中打开功能,Edit --> Project Setting --> Editor,选择 Sprite Packer(精灵包装器,可以通过 Unity 自带图集工具生成图集)

<img sec="https://img-blog.csdnimg.cn/img_convert/2750ee082c6e11f725c137dd6cd6a14c.png)

  • Disabled:默认设置,不会打包图集

  • Enabled For Builds(Legacy Sprite Packer):Unity 仅在构建时打包图集,在编辑模式下不会打包图集

  • Always Enabled(Legacy Sprite Packer):Unity 在构建时打包图集,在编辑模式下运行前会打包图集

    Legacy Sprite Packer 传统打包模式 相对下面两种模式来说 多了一个设置图片之间的间隔距离

    • Padding Power:选择打包算法在计算打包的精灵之间以及精灵与生成的图集边缘之间的间隔距离,这里的数字代表 2 的 n 次方
  • Enabled For Build:Unity 进在构建时打包图集,在编辑器模式下不会打包

  • Always Enabled:Unity 在构建时打包图集,在编辑模式下运行前会打包图集

(一)创建图集

​ 在 Project 窗口中右键选择 Create --> Sprite Atlas,创建图集

(二)参数介绍

  1. Type:图集类型

    • Master:主图集

      • Include in Build:选中可以在当前构建中包含图集

      • Allow Rotation:选中则将在打包图集时对图片元素进行旋转,可以最大限度提高组合后的图集密度

        (如果是 UI 图集,则禁用此选项,因为打包时会将场景中的 UI 元素旋转

      • Tight Packing:选中此选项将在打包图集时使用图片轮廓来打包而不是根据矩形,可以最大限度地提高组合后的图集密度

      • Padding:图集中各图片的间隔像素

    • Variant:变体类型的图集

      变体图集的主要作用是以主图集为基础,对它进行缩放产生一个新的图集副本。

      • Master Atlas:关联的主图集
      • Include in Build:选中可以在当前构建中包含图集
      • Scale:设置变体图集的缩放因子(0 ~ 1),变体图集的大小是主图集 * Scale 的结果

      如果想使用变体图集的内容,著需要勾选变体图集的 Include in Build,将主图集的此选项禁用即可

  2. Read / Write Enabled:允许通过脚本访问纹理数据

    如果启用,会创建纹理数据的副本,让内存翻倍。没有特殊需求一般不启用

  3. Generate Mip Maps:勾选则会生成 Mipmap,详见 图片导入与图片设置——纹理高级设置 Advanced

  4. sRGB:启用此属性可指定将纹理存储在伽马空间中,默认启用此属性

    对于非 HDR 颜色纹理(如反照率或镜面反射颜色),应始终选中此复选框

    如果纹理存储了有特定含义的信息,并且需要着色器中的确切值(如平滑度或金属度),则应禁用此属性

  5. Filter Mode:纹理在通过 3D 变化拉伸时如何过渡

    • Point:纹理在靠近观察时变为块状
    • Bilinear:纹理在靠近观察时变得模糊,推荐使用
    • Trilinear:与 Bilinear 类似,但纹理也在不同的 Mip 级别之间模糊

(三)代码示例

GameObject     obj = new GameObject();
SpriteRenderer sr  = obj.AddComponent<SpriteRenderer>();

//加载图集资源
SpriteAtlas spriteAtlas = Resources.Load<SpriteAtlas>("MyAtlas");

//加载图集资源中的某一张小图
sr.sprite = spriteAtlas.GetSprite("dead1");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022-04-30 Unity核心2——Sprite 的相关文章

  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • Unity 分块延迟渲染01 (TBDR)

    现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU CPU被用于处理需要低内存延迟的序列 大量分支的数据集 其晶体管用于流控制和数据缓存 GPU为处理大型 未分支的数据集 如3D渲染 晶体管专用于寄存器和算术逻辑单元 而不
  • Unity中级客户端开发工程师的进阶之路

    上期UWA技能成长系统之 Unity高级客户端开发工程师的进阶之路 得到了很多Unity开发者的肯定 通过系统的学习 可以掌握游戏性能瓶颈定位的方法和常见的CPU GPU 内存相关的性能优化方法 UWA技能成长系统是UWA根据学员的职业发展
  • Unity Shader入门精要第七章 基础纹理之遮罩纹理

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 实践 参考 前言 遮罩纹理 mask texture 是本章要介绍的最后一种纹理 它非常有用 在很多商业游戏中 都可以见到它的身影 那么什么是遮罩呢 简单来讲 遮罩允许我们
  • Unity动画系统详解

    目录 动画编辑器 编辑器面板 动画复用 前言 人形重定向动画 Humanoid 通用动画 Generic 旧版本动画 Legacy 动画控制器 系统状态 切换条件 状态机脚本 IK动画 反向动力学 BlendTree 混合树 Animato
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • VLC for unity 插件如何使用

    VLC for unity 插件如何使用 先去下载一个VLC播放器 安装完成后 然后导入插件链接https download csdn net my 这个插件我的另一个上传资源里有 或者到商店去下载 这个插件链接下载完是一个txt文档 里面
  • Unity保存图片到相册

    Unity保存图片到Android相册 Java 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • unity3d 自定义的图片无法放入source image中

    须将图片的texture type改为 sprite
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • 游戏开发创建操作之玩家信息系统的建立

    游戏一般都需要玩家信息系统 那么我们应该如何搭建玩家信息系统 接下来我将展示一种简单的方法 完整代码如下 using System Collections using System Collections Generic using Uni
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

    后续会出UGUI Json的版本 敬请期待 游戏开发中经常会出现药品商店 实际操作与武器商店类似 甚至根据实际情况可以简化设置 废话不多说 直接上代码 药品商店的源码 using System Collections using Syste
  • 游戏开发常用实践操作之按动任意键触发

    接下来一些笔记会对于一些大大小小的实践操作进行记录 希望对你有所帮助 在游戏中 我们经常会遇到一些按动任意键触发的操作 接下来展示核心代码 以下是对于Unity中的操作 使用的UI是NGUI 对于核心操作没有影响 你可以自己置换 void
  • 游戏开发中常见系统梳理之背包系统的实现一

    游戏中几乎都存在大大小小的背包系统 接下来我将讲述背包系统具体是如何实现的 完整源码 以下是使用unity NGUI实现 使用txt配置的方法 后续更新UGUI Json实现的背包系统敬请期待 背包中的物品我们常常将其制作成预设体 通过改变

随机推荐