C#程序员整理的Unity 3D笔记(十九):Unity 3D的Native 2D

最早接触Unity是从4.1版本开始,故那个时候只知道Unity 3D,无Unity 2D。近一段时间,通过学习,了解到Unity 2D也是蛮火的。如在最新的Unity 5版本中,新建项目可以选择2D、3D的,且该选项较以往版本更加醒目:仿佛告诉世人Unity不仅仅是3D的,Unity Native 2D也是不错的选择。

image

下面就使用过程中,Unity Native 2D一些特有的features整理出来:

1 Unity 2D新建工程不一样

看了一下官方的说明,发现实际上新建项目选择2D、3D不是决定项目的唯一,因为2D、3D还可以工程创建完成后,在Editor下也可以重新选择的。

新建2D项目,和3D项目大约有下面几个区别:

区别1:摄像机投影默认为Orthographic(正交)

image

区别2:场景视图,默认为2D方式

image

区别3:Edit—Project Settings—Editor 中默认Mode为2D

image

区别4:导入(添加)图片资源时,2D的Texture Type为Sprite(2D and UI)

image

新建工程时候选择2D、3D模式,目前就找到就这4种区别。

 

2 Unity 2D特有组件

Unity 2D自从4.3—>4.6—>5.0,增加很多2D组件: 我们发现Unity 5集中提供了15中Physics 2D组件,说明2D、3D的一个重要的区别就是在Physics上。

image

其中,Polygon Collider 2D组件非常棒,它提供了集成可视化调节碰撞盒子,按住Shift键可以添加碰撞点、按住Ctrl键可以删除碰撞点–对不规则Sprite尤为有用

image

 

另外,有一个重要的2D组件是Sprite Render,这个是2D下非常重要的组件。

image

Sprite Render是用来对Sprite(精灵)进行渲染的组件,它有2个重要属性:

  • Sorting Layer:由小到大排序进行渲染和呈现,大的会遮住小的。
  • Order In Layer:同层中渲染的优先级,数字越大渲染优先级越高。

注意,在Unity 2D中,一般不使用Z轴坐标,默认为0.

同样的功能,也可以在3D中使用Z轴由大到小来实现Order–但是相比,没有2D下的Sorting Layer直观。 在Sorting Layer下,你可以预定Soring Layer,这样便于team 协作:

image

 

3 Unity 2D 其他

2D的射线检测,3D检测是空间检测,2D则简单一些。

image

Physics2D.LinecastAll

public static RaycastHit2D[] LinecastAll(Vector2 start, Vector2 end, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);

Physics.Linecast

public static bool Linecast(Vector3 start, Vector3 end, int layerMask = DefaultRaycastLayers);

Physics2D.OverlapPointAll

public static Collider2D[] OverlapPointAll(Vector2 point, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);

 

Sprite.pixelsPerUnit = 100:1(默认100像素=1单位)

image

 

4 Unity 2D动画–Animator动画状态机,Animation动画编辑器

image

通过拖动多个Sprite即可自动生成Animation帧动画,在动态调节Sample率后,可观察到动画实时效果,非常简单。

 

参考文献:

作者: 王文刚

学习心得、技术分享