【Unity2D】提升tilemap地图绘制速度的技巧

先安装好对应的包
请添加图片描述

正文教程

下面的都是我找到的不错教程,学会了也就能少花冤枉钱,不被Unity中国坑。

【Unity小技巧】Unity2D TileMap的探究(最简单,最全面的TileMap使用介绍)

这个博客会详细讲解了规则瓦片的各种功能,帮助我们可以快速自动地铺好地图,偏向俯视角地图制作,但是太全了,也没个参照,所以对于新手不太友好。

unity2D学习(3)渲染层级以及背景拼接
unity2D学习(2)Tilemap绘制地图
unity2D学习(1)新建2D项目并导入素材>

一个仔细介绍绘制2D横板卷轴的视差的各种必要操作,讲的内容不够完备,但是够简单入门

Unity个人笔记(一):用Tilemap绘制2D地图

这个讲的内容不多,只是一些tilemap的补充,还有对碰撞体和刚体的影响考虑、

Unity2D农场RPG游戏开发教程

一个很完备的类星露谷教程,但是机翻,而且有些教学也是能用就行,不会太详细

个人补充

预设

在导入好我们的素材后,点击红框
请添加图片描述
创建我们这个素材的预设
请添加图片描述

那么在之后我们如果出现新增的素材,需要点击其他素材图片完成设置,可以直接点击预设,那么就不用麻烦自己一个一个点击设置了。
请添加图片描述

Smart

请添加图片描述

图片分层和y轴渲染

当我们横向分割时,我们可以选择锚点为bottom,这样在俯视角2D游戏中,我们就可以正确和方便地进行y轴的渲染。
请添加图片描述
比如我有一个人物图片素材,我会故意将其分割成手臂、头、身躯等等图层,总之就是单独拿出来,后续如果有需要进行人物换装的话,也方便操作。

注意在Inspector栏中我们设置sprite render组件的sprite sort point注意要选择pivot,这样才能对应得上我们y轴渲染

Player
|
 \ shadow
 \ body
 \ head
 \ arm
  • Player父对象添加sorting group组件,该组件可以让子对象变成一个整体,后续分层的图片只需注意优先级,设置成同一个sortingLayer,那么细微调整order in layer,那么就能做到符合现实逻辑的俯视角像素人物了。

由于unity默认是Z轴渲染,所以需要注意设置整个项目按照 Y 轴渲染
请添加图片描述

俯视角的移动注意事项

  • 注意斜线方向的移动不可能比正方向的移动快,要做限制;可以考虑限定上下左右四个方向的移动。
  • 移动的实现:获取输入方向->固定帧使用刚体组件的功能实现移动加速度,各个生命周期做各自该做的事情。
  • 刚体不能有重力、碰撞体要限制到阴影下,跟横板卷轴2d还是有点不同的。

地图分层设计(俯视角地图的一个框架设计)

俯视角的瓦片地图需要注意功能,从而分出不同的优先级和图层。
比如屋檐一定要遮挡人物,人物越过草丛,因为y轴渲染,所以能够显示出来。

总而言之,我们要优先设定好框架,这样才能方便后续要应用这些技巧上的内容,从而提高我们的速度。
在这里插入图片描述

  • 图片来源于麦扣的《麦田物语》

场景切换

其实就是加载Scene的问题,我们可以让一个scenemain存放镜头对着人物,另一个sceneload存放我们要加载的地图场景、敌人、障碍物。
在这里插入图片描述

tile map的小功能

不用麻烦自己专门点击场景中的地图了
在这里插入图片描述

规则瓦片随机中心点

通过添加不同的瓦片地图中心点,之后在把我们规则瓦片推拽到tilemap的画板后,就可以随机生成一个中间区域了,可以让一个俯视角的地图变得不那么单调。

在这里插入图片描述

  • 图片来源于麦扣的《麦田物语》
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity 2D中,可以使用代码生成TilemapTilemapUnity中用来创建2D游戏地图的工具。 首先,我们需要创建一个空的GameObject来放置Tilemap组件。可以使用如下代码来创建并添加Tilemap组件: ``` GameObject tilemapGameObject = new GameObject("Tilemap"); Tilemap tilemap = tilemapGameObject.AddComponent<Tilemap>(); ``` 接下来,我们需要创建一个Tile Asset,并将其添加到Tilemap中。我们可以使用Tile Asset来定义地图上的每个tile的外观和碰撞属性。 ``` Tile tileAsset = ScriptableObject.CreateInstance<Tile>(); tileAsset.sprite = yourSprite; // 设置tile的精灵 tileAsset.colliderType = Tile.ColliderType.Grid; // 设置碰撞类型 // 将tileAsset添加到Tilemap中的指定位置 Vector3Int tilePosition = new Vector3Int(x, y, 0); // x和y是tile的坐标 tilemap.SetTile(tilePosition, tileAsset); ``` 如果需要通过循环来生成整个Tilemap,可以使用嵌套的for循环,例如: ``` int mapWidth = 10; // 地图的宽度 int mapHeight = 10; // 地图的高度 for (int x = 0; x < mapWidth; x++) { for (int y = 0; y < mapHeight; y++) { // 创建和添加tile,设置位置和外观 Tile tileAsset = ScriptableObject.CreateInstance<Tile>(); tileAsset.sprite = yourSprite; tileAsset.colliderType = Tile.ColliderType.Grid; Vector3Int tilePosition = new Vector3Int(x, y, 0); tilemap.SetTile(tilePosition, tileAsset); } } ``` 以上就是使用代码生成Tilemap的基本步骤。通过这种方法,我们可以根据需要动态生成任意形状和大小的Tilemap,并指定每个tile的外观和碰撞属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值