Unity核心2——Sprite

news2024/11/26 19:54:44

顾名思义,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");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

以色列QM和荷兰QuantWare合作提供预集成控制系统和QPU解决方案

​ &#xff08;图片来源&#xff1a;网络&#xff09; 6月13日&#xff0c;以色列量子计算机操作系统初创公司Quantum Machines&#xff08;QM&#xff09;和荷兰超导量子处理器&#xff08;QPU&#xff09;的领先供应商QuantWare宣布合作&#xff0c;旨在大幅加速研究进展&a…

火爆全网,python自动化测试logging日志模块使用方法(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、日志级别 imp…

3D WEB轻量化引擎工具HOOPS Communicator与Three.js和自主DIY的对比分析

​基于Web的2D和3D可视化已经变得越来越流行&#xff0c;而且市场根据这些变化&#xff0c;为其提供了更丰富的实用性。如果处理得好&#xff0c;开发人员可以使用户以简单、用户友好的方式与其他客户、开发人员或其他任何人共享来自市场的设计。 当开发人员考虑第三方提供这项…

保险业服务模式“智能化”升级

近年来&#xff0c;随着数字时代的多元化发展&#xff0c;人工智能技术凭借其高度便利性&#xff0c;已被广泛拓展应用到各行各业。在AI的加持下&#xff0c;保险行业的发展正处于从“数字化”阶段迈向“智能化”阶段的过渡时期&#xff0c;销售渠道多样、业务量激增以及客户对…

Django之路由层

一、路由的作用 路由即请求地址与视图函数的映射关系&#xff0c;如果把网站比喻为一本书&#xff0c;那路由就好比是这本书的目录&#xff0c;在Django中路由默认配置在urls.py中&#xff0c;如下图&#xff1a; 二、简单的路由配置 # urls.py from django.urls import re_…

java 献血管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 献血管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

一&#xff1a;父子元素之间margin垂直方向塌陷问题 在处理margin垂直方向问题时&#xff0c;经常会遇到在给子元素设置margin时&#xff0c;导致效果出现在了父元素上&#xff1b;如下代码所示&#xff1a; 代码原义是想实现三方面&#xff1a; ① 将box1的margin-top调为5…

Activity 的生命周期和启动方式

Activity 的生命周期 Activity A 启动B&#xff0c;生命周期&#xff1a; A: onPause - B: onCreate-onStart-onResume- A:onStop Activity B返回 A&#xff0c;生命周期&#xff1a; B&#xff1a;onPause - A:onRestart - onStart - onResume - A:onStop onPause onStop 区…

分布式数据保护策略——多副本和纠删码怎么选?

在之前的《一文读懂分布式存储》文章中&#xff0c;我们介绍了什么是分布式存储。 但谈到存储&#xff0c;安全就是一个绕不开的话题。 没有数据安全的存储毫无意义。 所以数据保护技术对于分布式存储来说非常重要。 ▉ 为什么需要数据保护&#xff1f; 数据显示&#xff0…

考研英语|2022年真题 正确率:16/20|14:00~15:30

22 错 25 错 34 错 40 错 Text 1 21 实词对应 preservemaintain 22 推理判断题 错因&#xff1a;仅仅定位在vulnerable 没有继续往后阅读 immune to decay 理解错误&#xff0c;真确释义为“不会腐烂”&#xff0c;错误理解为“容易腐烂坏掉” 文中定位&#xff1a;第…

618年中大促专属!不容错过的B2B电商机遇

即将又迎来一年一度的618年中大促&#xff0c;各大品牌商家是否都做好准备了呢&#xff1f; 对于这场购物狂欢的盛宴&#xff0c;很多人常常会把焦点放在面向消费者的B2C市场上&#xff0c;B2B市场则因线上化渗透率较低&#xff0c;显得相对冷清&#xff0c;不够引人关注。 事实…

全网最全,pytest自动化测试框架——数据驱动实战详解(超详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 第一种&#xff1…

Web前端开发技术储久良第三版课后选择答案(1-10章)

P16-第1章 练习与实验答案 练习1 1.选择题 【1】Html是一种&#xff08;&#xff09;语言。 【A】编译型 【B】超文本标记 【C】高级程序设计 【D】面向对象编程【2】世界上第一个网页是()。 【A】http://www.w3c.org 【B】http:/info.cern.ch 【C】http://www.microsoft.com…

ffmpeg学习记录

1、对图片进行裁剪 ffmpeg -i input.jpg -vf cropiw/3:ih:20:0 caijian.jpg PS&#xff1a; crop100:100:12:34 相同效果: cropw100:h100:x12:y34 2、视频增加文字水印 使用drawtext滤镜进行增加水印 参数 类型 说明 text 字符串 文字 textfile 字符串 文字文件 …

invalid python sdk, pycharm2022不能创建虚拟环境的解决方法

感谢万能的google&#xff01; 一开始google搜索“pycharm2022 invalid python sdk cannot set up a python sdk at python 3.11”&#xff0c;进入链接&#xff1a;Cannot setup a Python SDK in PyCharm project using virtualenv after OS reinstallation - Stack Overflow…

Flink将数据写入CSV文件后文件中没有数据

Flink中有一个过时的sink方法:writeAsCsv,这个方法是将数据写入CSV文件中,有时候我们会发现程序启动后,打开文件查看没有任何数据,日志信息中也没有任何报错,这里我们结合源码分析一下这个原因. 这里先看一下数据处理的代码 代码中我是使用的自定义数据源生产数据的方式,为了方…

AIVA.AI:AI音乐作曲创作平台

【产品介绍】 AIVA.AI是一个人工智能音乐创作平台&#xff0c;可以根据用户的需求和喜好&#xff0c;自动生成不同风格和情感的音乐。目标是成为创意人士的创意助手&#xff0c;无论是独立游戏开发者、音乐新手还是专业作曲家&#xff0c;都可以利用AIVA.AI的技术来为自己的项目…

分布式各系统时间统一程序

目录 1、背景2、Cristians algorithm 算法&#xff08;克里斯蒂安算法&#xff09;3、实现思路3.1、步骤&#xff1a;3.2、公式 4、具体代码4.1、构建时间戳4.2、定义数据包4.3、客户端实现4.3、服务端实现 说明 1、背景 使用场景是在一个大型分布式系统下&#xff0c;对时间有…

第一天,掌握PyTorch的张量创建

文章目录 一&#xff0c;张量二&#xff0c;创建张量1. 直接从数据来创建张量Tensor函数TODO &#xff1a;从数据直接创建张量 2. 从numpy数据创建张量from_numpy函数从numpy数据创建张量 3. 从另一个张量来进行创建张量4. 使用随机值或者常数值来创建张量5. 张量的属性&#x…

【C】C语言数据类型、常量变量的介绍

C语言基础 数据类型常量和变量变量全局变量和局部变量变量的作用域和生命周期作用域生命周期 常量 数据类型 下图为C语言常见的数据类型&#xff1a; &#xff08;浮点数就是我们常见的小数&#xff0c;字符类型要用‘’引起来&#xff0c;在C语言中字符串类型要用字符数组来…