【Unity开发】Unity核心学习(一)

一、2D相关

1、图片导入相关设置

(1)Unity支持的图片格式

支持BMP、TIF、JPG、PNG、TGA、PSD

常用格式具体介绍:

JPG:指JPGE格式,属于有损压缩格式,无透明通道

PNG:无损压缩格式,有透明通道

TGA:支持压缩,使用不失真的压缩算法,体积小、效果清晰,有透明通道

(2)图片设置的6大部分

①纹理类型

Default:默认纹理,大部分导入的模型贴图都是该类型

Normal map:法线贴图格式
Editor GUI and Legacy GUI:一般在编辑器中或者GUI上使用的纹理

Sprite(2D and UI):2D游戏或者UGUI中使用的格式

Cursor:自定义光标

Cookie:光源剪影格式
Lightmap:光照贴图格式

Single Channel:纹理只需要单通道的格式

②纹理形状

③高级设置

MipMap:开启MipMap功能后,Unity会帮助我们根据图片信息生成n张不同分辨率的图片,在场景中会根据我们离该模型的距离选择合适尺寸的图片用于渲染,提升渲染效率。

④平铺拉伸

⑤平台设置

Max Size:设置导入的纹理的最大尺寸,即使美术出的很大的图,也可以通过这里把它们限制在一定范围内

Resize Algorithm:当纹理尺寸大于指定的Max Size时,使用的缩小算法

Format:纹理格式,各平台支持的格式有所不同,如果选择Automatic,会根据平台使用默认设置

Compression:选择纹理的压缩类型,帮助Unity正确选择压缩格式会根据平台和压缩格式的可用性进行压缩

Use Crunch Compression:启用后,使用Crunch压缩。Crunch是一种基于DXT或ETC纹理压缩的有损压缩格式。压缩时间长,解压速度快。

Split Alpha Channel:Alpha通道分离,节约内存。会把一张图分成两张纹理。一张包含RGB数据,一张包含Alpha数据,在渲染时再合并渲染。

Override ETC2 fallback:不支持ETC2压缩的设备上,使用的格式

⑥图片预览窗口

2、Sprite

(1)SpriteEditor

(i)Single图片编辑
(ii)Multiple图集元素分割
(iii)Polygon多边形编辑

用于多边形的图片,较少使用

(2)SpriteRender



(3)Sprite Creator

介绍:Sprite Creator主要的作用是创造出各种多边形,替代暂未完成的美术资源,先做好功能逻辑,等美术资源完成后直接进行替代即可。

使用:直接在Assets右键选择Sprites进行不同多边形的创建。

(4)Sprite Mask(只显示图片的部分内容)

(5)Sorting Group

介绍:SortingGroup是排序分组的意思,主要作用是对多个精灵图片进行分组排序,Unity会将同一个排序组中的精灵图片一起排序,类似于单个游戏对象,主要作用是对于需要分层的2D游戏用于整体排序。

使用:直接添加对应组件

(6)Sprite Atlas 精灵图集制作

(i)开启打图集






代码加载打图集后中的某个sprite

csharp 复制代码
        GameObject gameObject = new GameObject();
        SpriteRenderer sprite = gameObject.AddComponent<SpriteRenderer>();
        //加载图集
        SpriteAtlas spriteAtlas = Resources.Load<SpriteAtlas>("MySpriteAtlas");
        //加载图集中的图片
        sprite.sprite = spriteAtlas.GetSprite("sprite1");

注意点:通过图集中的图片如果穿插使用,可能会增加drawcall次数

3、2D物理系统

(1)刚体

(i)组件参数介绍





(ii)刚体类型选择

Dynamic:受力的作用,要动要碰撞的对象

Kinematic:通过刚体api移动的对象,不受力的作用,但是要进行碰撞检测

Static:不动不受力的作用,但是要进行碰撞检测

(iii)刚体api调用
csharp 复制代码
Rigidbody2D rigid=this.GetComponent<Rigidbody2D>();
//加力
rigid.AddForce(new Vector2(0,100));
//速度
rigid.velocity=new Vect2(1,0);

(2)碰撞器

(i)六大碰撞器类型






(3)物理材质

(i)介绍

物理材质是用于决定在物体产生碰撞时这些物体之间的摩擦和弹性表现的,通过物理材质我们可以做出类似斜坡不滑落,小球反弹等效果

(ii)相关参数

(4)恒定力

(i)介绍

恒定力是一个特殊的脚本,可以给一个2D刚体持续添加一个力,在做一些随着时间推移而加速的对象时很适用,例如火箭发射效果等,恒定力脚本会线性的为对象添加力和扭矩力 让其移动和旋转。

(ii)相关参数

(5)效应器

(i)介绍

2D效应器是配合2D碰撞器一起使用

可以让游戏对象在相互接触时产生一些特殊的物理作用

通过2D效应器可以快捷实现:传送 互斥 吸引 漂浮 单项碰撞等效果

(ii)不同种类2D效应器的使用

区域效应器:

浮力效应器:

点效应器:

平台效应器:

表面效应器:

4、SpriteShape

(1)作用

以节约美术资源为前提,制作2D游戏场景地形或背景

在PackageManger中可以导入包以及一些示例

(2)Sprite Shape Profile概述文件参数

(3)Sprite Shape Renderer 精灵形状渲染器


(4)Sprite Shape Controller 精灵形状控制器



(5)生成碰撞器

(i)使用边界碰撞器,根据形状自动生成(推荐)
(ii)使用多边形碰撞器配合复合碰撞器

5、Tilemap 瓦片地图

(1)介绍

作用:用于快速编辑2D游戏中的场景,复用资源提升地图多样性

工作原理:用小图排列组合为一张大地图

与SpriteShape的异同:

共同点:用于制作2D场景或地图

不同点:SpriteShape可以让地图有弧度,Tilemap不行;Tilemap可以快捷制作有伪"z"轴的地图,SpriteShape不行

使用方式:通过Package Manger安装使用

(2)创建瓦片资源

(3)瓦片调色板窗口使用

(i)创建相关参数
(ii)操作技巧
(iii)面板相关


(iv)不同类型瓦片使用总结

矩形瓦片:适用于横版游戏地图

六边形瓦片:适用于策略游戏地图

等距瓦片:适用于做有"z"轴的2D游戏(理解不够完全)

(4)瓦片地图关键脚本介绍和碰撞器了解




(5)官方扩展包使用

(i)介绍

扩展包下载地址:https://github.com/Unity-Technologies/2d-extras

扩展包作用:添加新的瓦片类型和笔刷类型,更加方便编辑2D场景

(ii)新增瓦片类型

规则瓦片:

动画瓦片:

管道瓦片:

随机瓦片:

地形瓦片:

(iii)新增笔刷类型

新建自定义预设笔刷

扩展画笔

(6)代码控制相关

(i)获取Tilemap和TileBase和Grid
(ii)重要api