U3D 官方learn path笔记:Unity Essentials

U3D Editor基础:

功能窗口:

Hierarchy和Project的区别:

Hierarchy窗口显示的是当前游戏世界(舞台)里的元素,Project里显示的是所有资源,比如新引进项目里,但是还没有添加到游戏世界里的资源。

Hierarchy里的资源组织方式与硬盘里的目录结构无关,可以通过建立Empty Object作为父对象,然后把任意对象放在里面,形成级联结构,这样来管理对象;也可以通过选中父对象,完成对一组对象的总体操作。

Hierarchy里蓝色的对象表示是预制件;可以将预制件右键Unpack来打散重新编辑,然后将编辑好的组拖进project窗口对应的目录里,实现创建新的预制件。

Window->packet manager用来管理外部包,packet包括从u3d商店获得的第三方资源包,也包括官方发布的各种插件,比如发布插件、开发插件等技术插件。

Plastic SCM是一个集成在编辑器里的协同开发工具,应该是跟github类似的东西。

对某个对象的属性的设置都可以在Inspector窗口找到。

快捷键:

Ctrl + Shift + F:将选定对象放在当前视角位置,对摄影机来说,就是把摄影机放在当前正在查看的视角处;

q/w/e/r几种对象操作模式的切换:位移、拖动、旋转等,注意看左上方激活按钮;

Ctrl+D复制当前所选对象;

舞台视角操作:鼠标右键按住并保持可以通过移动鼠标更改当前视角的角度,但是当前视角的位置不会变;鼠标右键按住并按asdw可以移动摄像机;按住鼠标中键移动鼠标可以垂直移动当前视角。按住Alt然后再按住鼠标左键移动鼠标可以以当前视线前方中间某个点为视线中心移动视角;按住Alt再按住鼠标右键移动可以缩放当前视角。

基本建模:

关于重力、弹力等物理属性:

默认新建立的普通对象(球、立方体等)都是不受重力影响的,放在哪里就固定不动;要让一个对象受重力影响,需要对它添加一个component:rigidbody(刚体)。在rigidbody下面的属性里,可以为对象设置质量、是否受重力影响等参数。这时物体是一个“刚体”,是不能形变的,也就不能弹跳。要使其有弹跳性质,就需要创建一个Physic Matierial,它有摩擦系数、弹性等参数可以设置;设置完成后,需要将此Physic Matierial拖动到需要应用的对象的xx collider里的Matierial参数里。这样这个对象才差不多具有了基本的现实世界的物理属性了。

基本编程:

U3d的脚本使用C#实现,编程需要添加script component(组件),组件也是要依附于对象来工作。有两个基本函数:onStart和onUpdate,看名字就知道是什么意思。添加完Script Component后要注意,在U3d Editor里给组件起的名字,跟它自动生成的文件的名字,以及名字对应的类的名字,都得是一致的。在类里定义public类型的变量的时候,变量会作为属性出现在对象的Inspector窗口里。

这些通过脚本控制舞台对象的应用接口就是U3D的Scripting API。

关于位置:

可以通过对象脚本里的transform对象对舞台里的父对象进行操作,其position是一个可读可写的属性。还有一个localPosition,不知道与position有什么区别。

关于旋转:

里面的旋转有点奇怪,首先,旋转使用的是欧拉角,通过一个三元向量(x, y, z)来指定旋转参数,而旋转的时候,先绕Z轴按左手方向转z,再绕X, Y。然而里面却有几处对不上的地方:首先,在舞台里的y轴,实际对应脚本里的z轴,而舞台里的z轴,实际对应脚本里的y轴。比如通过transform.Rotate()方法来使对象旋转(1,2,3),实际上在舞台里,是绕z转2,绕x转1,绕y转3。这可能是因为通常在三维坐标系里,向上都是z轴,而Unity编辑器没有按照这个来,而是使用y轴作为向上的方向,于是出现了跟脚本里y,z互换的情况。

另外,对象的朝向不能像位置那样,直接修改transform.rotation属性是不可以的,只能通过transform.Rotate()方法来连续旋转。

而且,transform.rotation给出的是一组Quatermion的坐标,输出出来并不是欧拉角,比如90度角输出的并不是90,需要通过transform.rotation..eulerAngles.y来读取其当前的关于y轴上的角度值。还有,在文档里写道,rotation的角度值不超过180度,应该是[-180,180)的范围,但是用transform.rotation..eulerAngles.y读出来的范围却是[0, 360). 这部分确实很混乱,需要好好理清一下。

基本声音:

声音也是通过给对象添加component的方式来实现。比如对于环境音乐,可以通过建立一个空对象,然后为其添加一个音乐组件。

与主相机(Main Camera)类似,舞台上也有一个主侦听器(Audio Listener),通常是跟主相机绑定在一起的,用来播放舞台中侦听器所在位置能听到的声音。主侦听器作为主相机的组件,出现在主相机的Inspector里,在Hierarchy里主侦听器并不会单独存在。

2D游戏

Unity的2D游戏实际上也是3D的,只不过把其中一维弱化了。而且在2D模式里也是y轴向上,z轴是垂直于屏幕指向屏幕内侧。

2D游戏模式下的资源被称为Sprite,可能跟对象差不多的意思。z轴可以调整2D模式下sprites的前后。

这里有些快捷键跟3D模式里一样,而且有一些跟PS里也是一样的。比如在变形模式下,按住shift键表示等比例缩放,而按住alt键则表示以图形中心为原点缩放,shift+alt就是以图形中心为标准等比例缩放。但是有一点不同,如果不用shift缩放,z轴上的尺寸是不变的,但是如果按住shift, z轴也会等比例变化。

关于碰撞collider: 在3D模式下,游戏对象自带collider组件。但是在2D模式下,sprite需要手动添加collider组件。

rigidBody组件为游戏对象提供的不止有重力属性,还有空气阻力属性。

猜你喜欢

转载自blog.csdn.net/terminatorsong/article/details/124349136