今天开始学习Unity

使用的Unity版本

unity2D适配_游戏引擎


学习视频是BiliBili的Unity2D官方入门教程Ruby Adventure 完整版首先是配置环境,需要关联Unity和VSCode

参考文章 安装了如下俩插件

unity2D适配_unity2D适配_02

常用快捷键

快捷键Q–Hand(手形)工具 可以平移整个Scene视图
快捷键W–Translate(移动)工具 移动所选择的游戏对象
Ctrl+N–New Scene 新建场景
代码块上一行/// 注释
Ctrl+6 打开动画面板
其他可以参考[快捷键文档]
()

切割图片为瓦片

以这张图片为例, 初始并未切割为瓦片

unity2D适配_ide_03


操作如下

  1. 修改属性Sprite Mode为Multiple,点击Apply
  2. 点击Sprite Editor按钮打开编辑弹窗
  3. 在Slice下拉框中修改Type为Grid By Cell Count,并修改数量为3x3,并点击Slice按钮进行切割
  4. 点击弹窗右上角Apply按钮,关闭弹窗,切好了

将瓦片添加到场景中

  1. 首先要打开Tile Palette瓦片调色板窗口(Window-2D-TilePalette)
  2. 新建一个调色板放到/Assets/Tiles下
  3. 将瓦片图集拖到调色板上,同样保存到/Assets/Tiles下
  4. 选择调色板中笔刷工具,选中其中一块瓦片,就可以绘制到场景中了


    但是瓦片并没有占满一格
    因为整张图片大小为192x192,切割后每个瓦片就是64*64
    100的格肯定占不满
    解决方法就是将单元格大小改为瓦片大小64

精灵添加碰撞

人物精灵需添加刚体

需要把重力改为0,不然会下坠

需要冻结z轴旋转,不然碰撞后会旋转

unity2D适配_游戏引擎_04


之后再添加一个Box Collider 2D组件,可以编辑碰撞盒大小和位置

瓦片添加碰撞

在Tilemap节点下添加碰撞组件

unity2D适配_游戏引擎_05

不需要碰撞的瓦片,直接在瓦片资源配置

unity2D适配_unity_06

但是如图,池塘里的每一块瓦片都有一个碰撞盒,很消耗性能,可以在Tilemap再添加一个Composite Collider 2D组件,并在碰撞盒组件下选择合并选项,合并在一起的碰撞盒

unity2D适配_快捷键_07


unity2D适配_unity_08


需要注意,添加合并碰撞组件后会自动添加刚体组件,需要将刚体设置为静态的,不然一碰就地震了hhh

unity2D适配_ide_09

上树了怎么办

unity2D适配_unity2D适配_10


A: 修改层级排序设置(Edit-Project Settings-Graphics)

修改为以y轴进行排序

unity2D适配_快捷键_11

修改精灵锚点

想修改树的锚点为树根,死活找不到

A: 需要直接在图片资源上修改锚点 +_+

改完之后还需要重新设置一下排序轴,不知道为啥

unity2D适配_游戏引擎_12

碰撞抖动问题

是因为刚体进行物理运动,碰撞时与精灵本身移动会产生误差,因此精灵和刚体不停进行位置矫正,导致抖动

A:使用刚体位置来控制移动

// Vector2 position = transform.position;
Vector2 position = rbody.position;
position.x += moveX * speed * Time.deltaTime;
position.y += moveY * speed * Time.deltaTime;
// transform.position = position;
rbody.MovePosition(position);

改完时候性能很不好,待解决…

相机跟随

先要下一个Cinemachine包(Window-Package Manager-Cinemachine), 可以自动控制相机

相机边界

人物走到边界时就会看到边界外边,希望相机到边界就不要移动了

unity2D适配_快捷键_13


A: 在跟随相机中添加相机边界组件(Cinemachine Virtual Camera-Add Extension-Cinemachine Confiner)

再添加一个空节点,添加自定义形状的碰撞盒组件Polygon Collider 2D,将盒子覆盖整个地图上(如图)

将这个节点拖动到相机边界组件Bounding Shape 2D属性上

unity2D适配_ide_14


就Ok了

unity2D适配_快捷键_15

代码模板

写了一个代码模板

{
	"Initial Code": {
		"prefix": "ucs",
		"body": [
			"///<summary>",
			"///Author: Qiu",
			"///Describe: $1",
			"///</summary>",
			"",
			"using System.Collections;",
			"using System.Collections.Generic;",
			"using UnityEngine;",
			"",
			"public class $TM_FILENAME_BASE : MonoBehaviour",
			"{",
			"\tvoid Start()",
			"\t{",
			"\t\t$2",
			"\t}",
			"\tvoid Update()",
			"\t{",
			"",
			"\t}",
			"}",
		],
		"description": "cocos creator common template"
	}
}

碰撞检测

吃草莓

/// <summary>
/// 碰撞检测,开始碰撞时回调
/// </summary>
/// <param name="other">碰撞物体</param>
void OnTriggerEnter2D(Collider2D other)
{
    PlayerController pc = other.GetComponent<PlayerController>(); // 检测是否有PlayerController脚本
    if (pc != null)
    { //是和任务碰撞的
        Debug.Log("把它吃掉!");
    }

}

进入陷阱
当人物进入陷阱中不走动时,此时不会进行碰撞中回调,需要在任务刚体组件中Sleeping Mode选择Never Sleep

/// <summary>
/// 碰撞中回调 每一帧调用一次
/// </summary>
/// <param name="other">碰撞物体</param>
void OnTriggerStay2D(Collider2D other)
{
    PlayerController pc = other.GetComponent<PlayerController>();
    if (pc != null)
    {
        pc.changeHp(-1);
        Debug.Log("啊!当前血量:" + pc.myCurHp);
    }
}

修改精灵显示范围

想要将陷阱的范围变大,直接拉回变形

unity2D适配_ide_16

unity2D适配_unity2D适配_17


A: 需要先在陷阱图片中改变属性

unity2D适配_快捷键_18

再改变陷阱节点的渲染模式

unity2D适配_ide_19

最后用Rect Tool就可以拉大范围了

unity2D适配_ide_20

动画面板按钮灰色

想编辑动画,但按钮都置灰了

unity2D适配_unity_21


A: 需要选中所编辑的节点

动画修改帧数

A: 动画面板x按钮下方的三个点,选择Show Sample Rate

添加混合树

这块没太懂。。

unity2D适配_ide_22


unity2D适配_unity2D适配_23

添加特效

添加节点-Effect-Praticle System

各种属性可以调节 比较多。。。慢慢了解吧

unity2D适配_快捷键_24

小问题:新建的脚本引入不了其它脚本类

A: 可能开启时间太长了?重启下VSCode就好了

添加音效

添加背景音乐

unity2D适配_游戏引擎_25


添加音效

private AudioSource audioS; //音效组件

void Start()
{
    audioS = GetComponent<AudioSource>();
}

/// <summary>
/// 播放音效
/// </summary>
public void AudioPlay(AudioClip clip)
{
    audioS.PlayOneShot(clip);
}

设置音效近大远小

引擎666

给机器人添加了脚步声的音效,正常播放的话就会很吵

在音效组件下设置声音传播范围

unity2D适配_unity_26


但此时听不到声音,因为Audio Listener目前是挂载在主相机下的,而主相机在z轴-10的位置

所以解决办法是:在关闭主相机Audio Listener组件,在主相机下新建一个空节点,挂载上Audio Listener组件

OK~~

弹幕里说挂载在主角下更好??

打包

在File-Build Setting打开窗口

unity2D适配_快捷键_27

设置完成后点击Build按钮,选中新建build文件夹,就等编译完成啦

unity2D适配_ide_28

但还是会有一些问题。。。

unity2D适配_unity_29