Unity入门计划基本概念-瓦片地图 TileMap 01
Posted 九九345
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity入门计划基本概念-瓦片地图 TileMap 01相关的知识,希望对你有一定的参考价值。
目录
3.3 Detect Chunk Culling Bounds 如何检测边界
1 TileMap概念
Tilemap就是被用来创造2D游戏世界地图的,常见的侧视、俯视、斜45度视角的2D游戏地图绘制都可以用它来实现。
主要思想
将游戏世界的每一种地形绘制成单独的整块,例如RubyAdventure项目资源中就提供了不同地形可以用来生成Tile的精灵:
用正方形、菱形或者六边形三者之一作为每一块的形状把整块分隔开,再像瓦片/瓷砖一样拼接起来。关于具体是如何分割的,后续会进行介绍。
优点
提高了美术资源的重用性,而且用这样一个工具可以大大简化地图绘制的工作量。
创建的层级
一般在一个2D游戏项目中,Tilemap创建会分成三个层次
- background——地图背景
- bound——边界
- foreground——前景,主要是地形
2 Unity中的TileMap
Unity中TileMap是作为一个游戏对象被使用的,用以储存和处理Tile Assets,它更像是一个系统,将Tiles传输到其他相关的组件中。
Unity中的TileMap由五个部分组成:
2.1 自动父级Grid 网格
创建一个Tilemap:
GameObject -> 2D Object ->Tilemap选择类型
当我们按照这个路径创建一个瓦片地图时,Unity会自动创建一个当前瓦片地图对象的父级对象(默认名称叫Grid),这个Grid就相当于一个个相连网格的合集,每个网格会存放一个Tile,Grid的Cell Size等属性可以改变网格的尺寸。
2.2 Sprite精灵
在【Unity入门计划】基本概念(6)-精灵渲染器 Sprite Renderer介绍了什么是精灵,它其实就是一个2D的Texture容器。
2.3 Tile 瓦片
瓦片包含一个精灵以及两个组件。创建方法:
Project窗口 -> Create -> 2D -> Tiles选择类型
新建的Tile需要给它一个精灵,也就是给它一个纹理。Select中选择精灵即可。还可以改变它的碰撞体类型,默认是Sprite精灵。
2.4 Tile Palette 调色板
可以快速地进行瓦片地图的绘制,创建方式有两个:
第一,从Project面板创建
Project窗口 -> Create -> 2D -> Tile Palette选择类型
第二,创建了Tilemap后,从Scene打开Palette窗口面板创建
二者都需要选择存储的文件路径。
2.5 Brush 笔刷
调色板中用以绘制瓦片地图的工具。
3 Tilemap Renderer 瓦片地图渲染器
它是Tile Map游戏对象中的一个部分,跟精灵渲染器之于精灵一样,它也用来控制当前Tile在Tilemap上的渲染,有以下属性.
3.1 Sort Order 瓦片排列顺序
这个很简单,就是规定每个Tile在整个Tilemap上的排列顺序。通过图层顺序体现前后关系。
3.2 Mode 渲染模式
渲染模式有两种
Chunk 分块渲染
使用分块模式进行批量渲染,这也是默认的渲染方式,选择Chunk后渲染器会按位置将瓦片进行分组,将瓦片上的精灵一起批处理渲染,可以在瓦片地图中获得最佳渲染性能。
Individual 单独渲染
单独渲染每个瓦片并考虑位置和排序顺序。
3.3 Detect Chunk Culling Bounds 如何检测边界
有两个值,Auto和Manual,自动和手动。默认是自动监测。此时渲染器会自动检查使用的精灵。当选择Manual时需要输入提出边界拓展的值。
3.4 Mask Interaction 遮罩
这里跟精灵渲染器的类似,就不赘述,用到了就知道是什么作用了。
3.5 Material 材质
定义用于渲染精灵纹理的材质。
剩下的就是图层关系了,不赘述。
4 瓦片地图的创建流程
4.1 创建Sprite&Tile
首先需要有个想要成为瓦片地图元素的瓦片Tile,还需要精灵作为纹理,因此通常会传入一个2D图片作为精灵。
例如RubyAdventure官方教程中就给出了一个PNG纹理素材,导入并将Type改为Sprite
下面是创建Tile,按照2.3中的创建思路创建一个Rule Tile基础瓦片,命名为BrickTile,并把刚才创建的精灵赋给他。
4.2 创建Tilemap&Tile Palette
GameObject -> 2D Object ->Tilemap创建Rectangular类型的瓦片地图,同时自动创建了父级Grid。
点开Palette Window,新建一个Palette命名为GamePalette,并将之前创建的Tile拖进去。
4.3 可以开始绘制瓦片地图
4.4 问题处理:Grid有缝隙
如下,瓦片没有填充满整个Grid
更改Tilemap精灵的像素大小,更改成64即可。
修改后的结果:
这是初始创建瓦片地图的方法,但对于一般项目而言,提供的会是多个瓦片的集合,02部分会介绍关于Tile的其他方面的内容。
Unity入门计划基本概念-预制件 Prefab
目录
官方文档
相关教程
我的Unity版本
2021.3.6
1 预制件的作用
unity中我们通常需要给游戏对象添加一些比如刚体、碰撞体等组件实现一些效果。但当遇到同一个NPC、场景中的道具在场景中需要被重复使用时,如果只是一步一步重复添加组件,效率会非常低,这是我们就希望把同一种需要复制的对象打包起来,需要用的时候直接复制粘贴即可。
预制件就是unity提供给用户的一个实现上述操作的资源类型。
2 预制件的定义
- 预制件(prefab)是一种assert资源类型;
- 预制件用于存储游戏对象(GameObject)对象以及配套的组件和属性;
- 预制件充当一种模板功能,是一个可重复使用的资源模板;
3 预制件的优点
既然它是一个打包好的资源模板,那么优点就清晰可见了。它可以轻松的大范围的修改项目的内容,无需对每个单一对象进行重复编辑,节省了大量的时间。
4 一般使用的场景
- 环境资源——很多的山、树等,会预先做好再导成预制件
- 武器的炮弹——大炮发射的实例化炮弹预制件
- 玩家——玩家预制件会被放在各个关卡的起点位置
5 预制件的创建&使用
5.1 创建
- 在文件夹右键 -> Create -> Prefab,就可以创建一个预制件;
- 将场景中想要实现复制的对象拖到这个预制件资源 -> 弹出提示框没选择Replace -> 就创建了一个可重复使用的资源模板;
- 此时, 原本的对象前面的图标也改变了,从线框 -> 实心 ;属性面板也多了Prefab属性。
5.2 使用
使用就很简单了,要么直接拖入Scene视图,要么ctrl+D复制即可。
6 预制件的编辑
6.1 更改预制件本身
双击进入预制件,就会把关注集中在预制件本身,给他做修改、添加组件即可。同时预制件设置的操作,会在场景中所有由预制件生成的实例对象做更改。
6.2 更改实例对象
如果在预制件生成的实例对象做更改,修改后,需要在Inspector面板上方的Prefab栏 -> Overrides做操作
- Revert All——还原到预制件
- Apply All——修改预制件的值
还可以单独做更改,同时对应的Revert和All意思跟上面的一样。
6.3 实例属性优先于预制件
需要注意的点是,如果在预制件生成的实例对象里对某个值做了修改以后,这个值就会被覆盖掉,再在预制件中进行修改是不会改变当前实例对象的值的。
这个很好理解,预制件相当于所有子对象的父类,生成的实例子对象是子类,父类的操作总是在子类之前的,因此子类就具有修改所谓的优先性,属性的修改也优先于预制件。
7 预制件变体 Prefab Variant
直接引用UP教程举例的关系图:
预制件变体是由原来预制件创建出来的新的预制件,在保留了原来预制件的基础上,还添加了新的特性,这些预制件变体还可以变出自己的变体,再由这些变体生成对应的不同的对象。
7.1 预制件特点
- 预制件变体继承基础预制件的属性
- 预制件变体的属性覆盖优先于基础预制件
7.2 预制件的创建
- Project面板 -> 右键想要当作基础预制件的Prefab -> Create -> Prefab Variant
- 直接拖入想要当作预制件变体的对象,会有提醒是否创建预制件变体
8 预制件unpack成对象
如果不想让预制件继续充当预制件了,在hierarchy窗口右键,Prefab -> unpack,就能解包成一个单纯的游戏对象了。
以上是关于Unity入门计划基本概念-瓦片地图 TileMap 01的主要内容,如果未能解决你的问题,请参考以下文章
[原创] 用Unity等比例制作广州地铁,广州加油,早日战胜疫情(Unity | 地铁地图 | 第三人称视角)
[原创] 用Unity等比例制作广州地铁,广州加油,早日战胜疫情(Unity | 地铁地图 | 第三人称视角)
Unity入门计划基本概念-2D刚体Rigidbody 2D