课程:《勇士传说》入门到进阶
P1:安装Unity引擎和代码编辑器|Unity2022.2 最新教程《勇士传说》入门到进阶|4K_哔哩哔哩_bilibili
P2:素材导入和整理|Unity2022.2 最新教程《勇士传说》入门到进阶|4K_哔哩哔哩_bilibili
重要知识点1:关于图片资源的基础设定
①点击Project中的资源,在Inspector中进行设置。
②设置内容包含:
- 每个unity白线格子中的可以显示的像素数量,需要与资源绘制时的像素比例保持一致。(例如绘制时为“16*16”,那么此处应填写“16”。)
- 过滤模式,像素类游戏需要选择“Point(no filter)”,意味着不需要添加任何过滤。
- 压缩,选择无压缩,保证美术资源质量。
③设置调整好后,需要Apply。
重要知识点2:关于图片资源的切割方法(以人物资源为例)
①点击Project中的资源,在Inspector中进行设置。(与上文一致)
- 需要特别注意如果图片为单图则在Spirite中选择Single;如果图片为图集则需要在Spirite中选择Multiple。
②点击Sprite Editor进入其界面。
③点击Sprite Editor卡界面中,左上角的Slice,进行切割方式设置。
- 选择切割方式:Automatic为自动切割,锚点与切割都大小不一样,后续动画难以继续制作。
- 选择Grid By Cell Count,根据计算图片中行列数量进行切割。(例如例图中人物的数量为11*8,将其数据填好,即可等比切割。)
- 锚点设置:为方便后续动画制作,我们需要将切割后的单图锚点位置设置为每张图片的底部(例图中的角色脚底中心点),可将Pivot选项更改为Bottom。
④点击Slice切割。
⑤点击Sprite Editor界面中右上角的Apply进行应用。
- 课程中应用切割后,需要在Inspector中再次进行Apply,但我在操作中Apply是灰色,不知道是不是因为unity版本原因,后续制作中会关注此问题。
P3:场景绘制和叠层设置 Tilemap|Unity2022.2 最新教程《勇士传说》入门到进阶|4K_哔哩哔哩_bilibili
重要知识点1:Unity2D绘制工具-创建瓦片地图/调色盘/瓦片
①场景绘制前,需要将场景贴图设置和切割完毕,具体参考上一P。
②打开2D绘制工具窗口:点击Window-2D-Tile Palette。
③创建一个新的调色盘(Forest1)。
- 点击Create New Palette后会弹出窗口,为调色盘命名后(一般与资源命对应),点击Create。
- 弹出设置调色盘位置窗口,首先,新建一个Tilemap(瓦片地图)文件夹。
- 接着,建立一个新的Palettes(调色盘)文件夹,方便管理所有的调色盘。
- 选择文件夹后,Forest1调色盘创建完毕。
④创建一个新的瓦片。
- 调色盘创建完毕后,将对应的切割好的贴图拖入Tile Palette当中。
- 松手后,弹出窗口询问瓦片存放位置,我们将瓦片存放于Tilemap(瓦片地图)文件夹中。
- 在Tilemap文件夹下创建一个Tiles(瓦片)文件夹,接着在此文件夹下创建Forest1瓦片文件夹。
- 选择文件夹后,Forest1瓦片创建完毕。
重要知识点2:Unity2D绘制工具-使用瓦片地图/调色盘/瓦片
①初创建时,Tile Palette会显示无可用目标(地图图纸),所以需要进行创建一个新的地图图纸以用于绘制。
②在Hierarchy中点击“+”-2D Object-Tilemap-Rectangular(常规方形地图图纸)。
③返回Tile Palette会发现已自动选择可用目标。
TIPS1:若发现选择瓦片后,图片不在格子当中,需要在贴图Sprite Editor中将切割锚点更改为Center。
TIPS2:若想要修改内容占屏幕中的比例,则需要调整Maincamera中的Size。
重要知识点3:叠层概念-Sorting Layer
①在Sprite Renderer(渲染组件)中,Sorting Layer(叠层)默认为“Default”,Order in Layer(叠层顺序)默认为“0”。
②当我们需要调整层级关系时,单调整图层顺序会比较麻烦,所以我们可以创建不同的图层,即Add Sorting Layer...,可在打开后的窗口中进行添加/减少/调整图层上下关系等操作。
③添加完毕后,需要返回Sorting Layer当中进行设置。
TIPS1:在Unity中的图层概念为,下方的图层会遮挡上方图层,与PS图层概念恰好相反。
TIPS2:Order in Layer中数字越大,图层越显示在前面。
重要知识点4:创建多个TileMap(瓦片地图)绘制不同层级的内容
TIPS:在创建Tilemap之前需要根据美术效果图先构思图层分类。
①右键Grid-2D Object-Tilemap-Rectangular,创建一个新的瓦片地图。
②创建多个Tilemap后,需要继续调整其Sorting Layer与Order in Layer,使之与之前设计的图层关系对应。
③创建完毕后,可以在Tile Palette的目标中看到所有的地图图纸。
TIPS:Tilemap Focus功能可以帮助我们将正在绘制的层凸显出来。
P4:有规则和动态瓦片|Unity2022.2 最新教程《勇士传说》入门到进阶|4K_哔哩哔哩_bilibili
TIPS:在使用以下工具进行工作前,务必将上述流程中切割好的资源进行清晰的命名处理。
重要知识点1:规则瓦片工具
①在Project窗口的Assets-Tilemap-Tiles下创建新的文件夹,命名为“RuleTiles”(规则瓦片)。
②在RuleTiles文件夹下创建2D-Tiles-RuleTiles,例子中命名为Ground1,下图为Ground1的Inspector窗口。
③创建瓦片规则:点击Ground1的Inspector中右下角的“+”以增加瓦片规则。
④九宫格使用解释:选择瓦片后,根据美术图判断此资源各方向是否有图片,若某方向有图片需要单击鼠标左键,出现绿色箭头;若某方向无图片需要单击鼠标右键,出现红色叉叉。
- 进行设置后再次单机鼠标右键均可取消设置。
- 九宫格使用举例:下图瓦片为左上角使用,所以该瓦片的九宫设置应是右下绿箭头,左上叉叉。
⑤随机出现多张瓦片:则创建瓦片规则后,点击Output下拉菜单,选择Random。
- Size可以设置随机图片数量,接着将随机的图片依次加入即可。
- Noise可以调整瓦片被随机时的数量。
⑥使用规则瓦片进行绘制:将创建好的规则瓦片(例子中Project中的Ground1),拖拽至TilePalette当中。
- 调色盘中当即显示之前所设置的默认图片。
- 点击此瓦片,便可在场景中进行绘制。
TIPS:绘制前检查绘制的图层!检查绘制的图层!检查绘制的图层!!!!!
重要知识点2:动态瓦片工具(制作瀑布为例)
①在Project窗口的Assets-Tilemap-Tiles下创建新的文件夹,命名为“AnimatedTiles”(动态瓦片)。
②在AnimatedTiles文件夹下创建2D-Tiles-AnimatedTiles,例子中命名为“WaterFall Left”(此此处根据切割后的资源表现得出,后续会继续区分为WaterFall Mid和WaterFall Right),下图为WaterFall Left的Inspector窗口。
③动态效果数量设置:根据瀑布切割后,左侧由4个瓦片组成,所以在Number of Animated ...中填写组成该次动态效果的图片数量,即为“4”。
④将四张图片逐一设置,同时可以调整Speed控制动画速度。
⑤使用动态瓦片进行绘制:与上述规则瓦片一致,将创建好的动态瓦片(例子中Project中的WaterFall Left),拖拽至TilePalette当中。
TIPS:类似瀑布这种左中右拆分成组的动态瓦片,拖至调色盘时需要排列好,之后可以将其成组绘制在场景中。
P5:设置人物及基本组件|Unity2022.2 最新教程《勇士传说》入门到进阶|4K_哔哩哔哩_bilibili
重要知识点1:重力组件
①选择Project中的Player,在其Inspector中Add Component,选择重力“Rigidbody 2D”。
- 重力相关的部分设置衍生至Edit-Project Setting...中,简单了解下Project Setting,例如下图:
重要知识点2:碰撞体组件——角色(胶囊碰撞器)
①选择Project中的Player,在其Inspector中Add Component,选择胶囊碰撞器“Capsule Collider 2D”。
②调整碰撞范围:点击Capsule Collider 2D下的Edit Colllider,角色的碰撞框即可被拖拽调整大小和位置。
- 调整完毕后,需要将Capsule Collider 2D下的Offset和Size值取整。
TIPS:碰撞体的底部需要与切割后的角色资源底部对齐,防止穿帮。(我自己感觉再和锚点尽量对上可能会更好?后面会试试看!)
③锁定人物旋转:若不锁定,当角色有角度变化时(例如跑动移动或撞到NPC)便会倾倒,为了防止该情况的发生,我们需要在Rigidbody 2D中设置“Constraints”。
- Freeze Position为冻结坐标,Freeze Rotation为冻结Z轴旋转;冻结Z轴旋转后,再次运行则会发现被旋转的角色不会倒下。(没弄明白原理但角色非常神奇!)
④人物质量Mass:相同的两个物体谁的质量大,那么模拟的重力也更大,在移动的过程中便可以撞开比较轻的物体,模拟真实世界物理碰撞效果。
⑤角色碰撞检测频率Collision Detection:由于角色动作较多,并具有持续性,为了检测更加精准,可以将默认的Discrete(间歇检测)更改为Continuous(持续检测)。
TIPS:选择Hierarchy中想要聚焦的内容,单击“F”则可以聚焦至该内容,方便查看内容有什么和找到内容位置。(嘎嘎好用!之前工作的时候真的不知道这个,每次找东西非常要命。T.T)
重要知识点3:碰撞体组件——瓦片地图(瓦片地图碰撞器)
①选择Project中的Platform,在其Inspector中Add Component,选择瓦片地图碰撞器“Tilemap Collider 2D”。
②合并同一碰撞体:
- 初设置时,平台会被分割为一块块的碰撞体,我们在运行时则要检测每一个碰撞体与角色之间的碰撞,如下图:
- 在勾选Tilemap Collider 2D下的Used By Composite(合并同一碰撞体)之前,我们需要先在Add Component,添加组件“Composite Collider 2D”,之后平台的碰撞体便被合并。
- 注意:添加“Compossite Collider 2D”组件后,会自动添加“Rigidbody 2D”组件,此时运行场景会掉出屏幕。
- 所以我们需要将平台的Rigidbody 2D中Body Type修改为“Static”(固定的不变的),设置后场景变没有了重力效果,运行后人物便会成功落在平台上。
,
重要知识点4:学习手册的运用
①Unity中每个组件的选项功能非常丰富,为了更详细的了解,我们点击组件右上角的“?”跳转至学习手册中进行查看详细说明。
P6:创建及配置新输入系统 New Input System|Unity2022.2 最新教程《勇士传说》入门到进阶|4K_哔哩哔哩_bilibili
重要知识点1:C# Script脚本文件的创建与规则
飞羽老师的课程:14.尽职的一生,了解脚本的生命周期_哔哩哔哩_bilibili
※非常重要 ※TIPS:创建C# Script(脚本文件)时,要马上命名,该文件名对应了代码中class(类)的名字,再次修改时,代码中class的名称不会被同时改变,会导致后续代码与unity中的脚本文件无法对应从而失效。
重要知识点2:New Input System设置与下载
①升级unity输入系统:打开Edit-Project Settings...-Player-Other Settings。
②API适用等级修改为.NET Framework;Active Input Handling修改为Input Manager(NEW)。
③Apply后Unity会进行重启。
④载入新的输入系统:Window-Package Manager,将界面左上角下拉菜单更改为Packages:Unity Registy。
- 右上角搜索框中输入Input,便可以查看到新的输入系统,点击Install进行载入,安装完毕即可。
TIPS:Documentation可查看该功能的学习手册。
重要知识点3:New Input System基础配置了解
①在Project-Settings下创建新的文件夹并命名为“InputSystem”。
②在此文件夹中创建“Input Actions”,并命名。(例子中命名为InputControls)
③双击或点击Inspector中的Edit addet即可打开窗口。
TIPS:设置完毕记得点击“Save Asset”或者勾选“Auto-Save”进行保存。
重要知识点4:New Input System自动添加配置
①选择Project中的Player,在其Inspector中Add Component,选择“Player Input”。
②创建InputAction:点击“Create Actions...”,在浏览文件夹中选择上述步骤中创建在Settings下的“Input System”文件夹,并为该Action命名。(例子中命名为“PlayerInputControl”)
③保存后,生成默认操作设置(此处可将Player更换一个识别性更好的名字,例子中修改为“Gameplay”):
④通过模板实现输入监测设置:选择Project中的Player,在其Inspector中Player Input中,将Behavior下拉菜单修改为“Invoke Unity Events”。
- 在Events当中的Gameplay(刚在配置窗口中重新命名的Action)下,即可查看到自动生成的可监测模板。
- 通过代码实现输入监测设置:选择Project-Settings-InputSystem中的PlayerInputContorl,在其Inspector中勾选Generate C# Class。
- unity会根据当前文件的名字生成一个C#,可被访问,点击Apply,之后双击脚本文件进入VS当中进行编写。
- 举例:读取移动数值在VS中的代码内容:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour
{
public PlayerInputControl inputControl;
public Vector2 inputDirection;
private void Awake()
{
inputControl = new PlayerInputControl();
}
private void OnEnable()
{
inputControl.Enable();
}
private void OnDisable()
{
inputControl.Disable();
}
private void Update()
{
inputDirection = inputControl.Gameplay.Move.ReadValue<Vector2>();
}
}
- 保存脚本文件后,在Unity中便可以在Player的Inspector下监测到移动反馈。
TIPS:以上代码内容,看不懂没关系,先了解熟悉一下整体流程。