Unity3D基础知识梳理

移动开发 Android 游戏开发
Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。

这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两天整理的一些基础知识分享上来了,闲话不多说~

美术部分:

Unity的话主要还是分两块吧,第一块是美术(自己都不懂~这里允许我稍微带过一下吧~),美术的话主要包括3d模型、材质、纹理(贴图)这几部分吧,当然你也可以说还有shader(着色器),Unity本身拥有几十种shader,也可以根据自己的需要使用shaderLab语言来编写shader,这个对我来说相当有难度,所以一般只用Unity自带的和网上“流传”的。

接下来是程序方面的:

基本组成:

Scene场景,类似于Flash中的stage,用于放置各种对象。

GameObject,可以携带各种Component(每个GameObject至少带有Transform组件,所有的组件都可以从顶部菜单Component里面找到并添加给游戏对象)。

Component组件,附加在GameObject上,不同的组件可以使GameObject具有不同的属性,Transform、碰撞器、刚体、渲染器等都是组件,脚本也是组件的一种,对象所表现出来的行为都是由组件实现的。

脚本语言:

C#、Javascript、boo(前两者使用较为广泛,网上教程以前两者为主,个人推荐c#),一般的继承MonoBehaviour类的脚本都需要依附的场景中的对象上才能被执行。

用户图形界面部分(GUI):

  • 用于制作按钮、文本显示、滚动条、下拉框等常用图形操作界面元素,使用GUISkin和GUIStyle可以自定义样式)
  • 系统自带GUI
  • 各类GUI插件,NGUI、EZGUI等。

预制:

  • 用于程序运行时,动态实例化对象的“母体”,比如,在射击类游戏中,子弹的生成就可以使用实例化预制的方式来实现,这就好比是Flash中的各种Display类,你可以定义它的各种属性方法,然后在使用的时候直接实例化一个实例。
  • 在project面板右击选择Creat——Prefab新建一个预制,将Hierarchy面板中要制成预制的对象拖到这个新建预制上即可。

标签和层:

  • 标签(tag)用于辨别物体,与name类似,使用对象的tag和name都可以找到对应的物体 (GameObject.Find(“Name”)、 GameObject.FindWitnTag(“Tag”))。默认是Untagged,可以通过Inspector面板里面Tag的下拉菜单选择 Add Tag项来添加新的标签, 在tagmanager中点开Tags左侧的小三角通过size来增加标签的数量,每个Element内都填入新标签的名字
  • 层(layer),在使用某些功能的时候,可以通过层来过滤不 需要运用该功能的对象,也就是把该功能运用到特定的层,比如,相机的Culling Mask属性,通过选择特定层可以实现只显示位于被选中的层的对象。层的添加也是在标签管理器中,Unity已经设置了8个层,你是不能对这8个层进行修 改的,你可以从第9个(也就是user layer8)开始添加你定义的层。

资源:

  • .unitypackage格式的文件可以直接import到unity中,记住最好是在打开unity的情况下,在project面板 里右击,然后在import packages中选中你要导入的资源。注:Unity不识别中文路径,因此要导入的资源千万不要放在中文目录下!!!还有你的工程也不要新建在中文目录 下!!!(你新建工程的时候选择中文路径的话,也建不起来~)
  • 也可以把你的场景打包,导出.unitypackage资源包,然后可以在其他项目中导入使用。(在project面板里右击, export package)
  • 另外,利用工程面板(project)右键菜单中的import new assets可以导入其他形式的资源,如,模型、音频、视频等,当然也可以直接将外部文件夹中的资源拖到project中的方式完成导入。

物理引擎:

unity使用NVIDIA PhysX物理引擎

  • 碰撞器:各种基本体的碰撞器(box、sphere、capsule、cylinder),网格碰撞器(mesh collider)、车轮碰撞器(Wheel collider)、地形碰撞器(terrain collider)——碰撞器组件在你选中对象的时候会以绿色线框显示。
  • 碰撞检测:碰撞器碰撞检测、光线投射(射线)、触发器碰撞检 测,通过碰撞检测可以得到与当前对象发生碰撞的对象信息,使用碰撞的相关函数OnCollisionEnter(碰撞器碰撞检测)、 OnTriggerEnter(触发器碰撞检测)、Physics.Raycast(光线投射)获取。
  • 刚体:模拟物体物理现象的基础,加了刚体组件才能模拟重力、阻力等。
  • 力:作用于刚体,你只要通过添加各种力,就可以使刚体表现出跟现实中一样的受力情况。

粒子系统:

两种形式,一种以物体携带粒子系统组件的形式实现,另一种是直接使用粒子系统GameObject(3.5以后)

  • 粒子系统GameObject:GameObject——Creat other——Particle system
  • 粒 子系统组件:粒子发射器(ParticleEmitter,有Ellipsoid Particle Emitter和Mesh Particle Emitter两种类型的粒子发射器,主要有粒子产生、数量、速度、大小、存活时间等参数设置)、粒子动画器(Particle Animator,主要负责粒子产生后直至粒子消亡的行为变化的控制,包括运动过程中的旋转、受力等)、粒子渲染器(Particle Renderer,主要是负责给予粒子的渲染,阴影、材质等设定)

抽空可以用粒子组件调一个火焰效果,把所设置的参数值分享给大家~

粒子系统组件参数浅析+火焰粒子demohttp://bbs.9ria.com/forum.php?mo ... 1&extra=#pid1577455

相机(camera):

  • 相机视角:透视(可以调整透视角度)、正交(没有透视效果)
  • Skybox:只在Game窗口可见,需要skybox类型的shader,以及附在其上的六面贴图纹理。
  • 第 一人称视角:角色不出现在视野中,相机看到的就像角色双眼看到的一样,如,常见的FPS射击类游戏。第三人称视角:能在视野中看到角色,相机一直跟随者角 色运动。(可以导入Unity自带的CharacterControllers资源包,里面有第一人称和第三人称的原型)

光照系统:

创建灯光GameObject——creat other

  • 常用灯光类型:平行光(Directional light,无衰减,模拟太阳光)、聚光灯(spotlight,从一点向某一方向发射锥形光束,有衰减,聚光效果)、点光源(Pointlight,从一点向外辐射,有衰减)
  • 烘焙:将静态光影效果渲染到纹理上,减少灯光和阴影带来的开销(free版的Unity不支持阴影,因此烘焙是free版实现阴影的方式)。
  • 阴 影:只有pro版才支持,分为hard shadows和soft shadows两种,前一种阴影比较重,后一种相对柔和。但是默认情况下,你会发现只要directional light类型的灯光才可以使用阴影,别急,咱们来改一个设置,让其他两种灯光也能使用阴影,打开edit-project settings-player,然后将rendering path改为deferredlighting(延迟光照),这下你的电光源和聚光灯也能产生阴影了~(要产生阴影,还需要将投射阴影的对象的Cast shadows(投射阴影)勾选,将接受阴影的对象的Receive shadows(接受阴影)勾选,  举个例子,你要让树在地面上产生阴影,那就得让树投射阴影,然后让地面接受阴影才行)。

地形系统:

选择顶部菜单Terrain——creat terrain创建一个地形。

地形有一组地形工具用来绘制地形的高度、生成各种地貌,并且可以对地表运用纹理,还可以添加树、草等地表植被。当然在使用纹理绘制地形以及添加地表植被之前 需要导入相关的纹理资源和植被资源,另外还可以导入unity自带的水的资源包,使用它里面的水面来模拟地形中的湖泊、河流等。

发布:

  • 关于Player settings播放器设置的话这里暂且不多说,发布的时候通过player setting进行发布设置,每个平台都有对应的设置参数,根据需要来设置,主要是关于程序图标、分辨率、渲染等设置,大家可以自己试试(有些参数只有pro版才能设置)。
  • 下 面我们来看看build settings对话框,左侧是可发布的平台(Unity跨平台性很强大,4.0已支持发布至10种平台:IOS、Andriod、Windows、 Mac、Linux、Webplayer、Flash、PS3、Xbox360、Wii u),右侧是对应平台的发布设置,一般初学的话,只要会发布单机版的和webplayer的就差不多了,这两个的话,右侧的发布选项按照默认的设置就可 以,当然单机版要在Target Platform中选择对应的操作系统,webplayer的话这里我给大家介绍前两个参数,Streamed顾名思义就是在网络上下载的时候以流的形 式,Offline Deployment,这个是可以在离线(断网)状态下本地运行你的webplayer程序(这里需要注意的是,默认情况下你每次打开webplayer 程序的时候,浏览器都会自动去访问官网更新webplayer插件,如果你没勾选这个选项而又在没有联网的状态下运行webplayer的话是无法运行 的)

[[69782]]

学习平台:

最后提供些学习平台

责任编辑:闫佳明 来源: bbs.9ria
相关推荐

2013-04-25 09:56:24

unity3D手机游戏引擎

2013-04-25 10:03:07

unity3D手机游戏引擎

2013-06-18 08:49:15

2013-04-25 13:27:11

unity3D手机游戏引擎

2013-04-25 09:08:39

unity3D手机游戏引擎

2015-10-29 14:24:42

JavaScript基础知识

2013-06-19 08:52:48

Unity3D

2023-03-21 18:16:54

2011-06-01 09:26:58

路由路由器路由选择协议

2011-05-31 09:29:47

网际互连以太网交换机

2011-05-31 10:14:24

协议IPARP

2012-12-24 09:11:58

iOSUnity3D

2012-12-24 09:20:48

AndoidUnity3D

2013-06-14 09:54:04

Unity3D

2023-07-29 08:28:18

ES开源

2012-12-24 08:45:19

iOSUnity3D

2011-05-31 13:50:14

CiscoIOS

2012-12-24 08:48:25

iOSUnity3D

2012-12-24 08:46:50

iOSUnity3D

2012-12-24 09:01:41

iOSUnity3D
点赞
收藏

51CTO技术栈公众号