我的Unity 3D之旅——Hello World(2)
2016-07-28 16:18
225 查看
二、调试程序
完成了上一节的内容,我们的第一个Unity程序已经可以运行了。但是游戏开发远没有这么容易,出现点错误什么的是非常正常的。调试,对于定位和解决程序出现的各种问题是非常重要的。下面介绍在Unity中常用的两种调试方法:1. 显示Log。在Unity编辑器下方有一个Console窗口,用于显示控制台信息,如果程序出现错误,这里会用红色的字体显示出错误的位置和原因(和Eclipse相似)。当然我们也可以在程序中添加代码来显示Log信息:
Debug.Log("A Common Log"); Debug.LogWarning("A Warning Log"); Debug.LogError("An Error Log");
运行程序,当执行到上述代码时,在控制台会显示出相应的Log信息。而根据调用的函数不同,从上而下依次是消息级别、警告级别和错误级别的Log。
右击Console窗口,选择【Open Editor Log】会打开编辑器的Log文档。这个Log文档记录了Unity从最近一次启动开始的所有日志信息。一个比较实用的功能是,当我们将游戏编译完成以后,在这个Log文档中会显示出游戏的资源分配情况。举个栗子:
2. 设置断点。当使用Visual Studio 2015 Community作为Unity的脚本编辑器时,可以在代码中需要的地方设置断点,然后在工具栏中选择【Attach to Unity】,vs会自动生成并链接到Unity。回到Unity中运行游戏,当脚本运行到断点时游戏就会自动暂停,这时就可以在vs里查看调试信息,具体的调试操作与调试普通的C#项目完全相同,不再赘述。
三、Unity基本模块
介绍完程序的调试,接下来简单介绍一下Unity中的几个基本模块。在此只作最简单的介绍,具体在以后使用到时再作详细说明。1. 光照。光影效果是3D游戏中非常重要的组成部分,下面进行介绍。
(1) 光源。Unity一共提供了4种光源,包括Directional Light(平行光)、Point Light(点光源)、Spotlight(聚光灯)和Area Light(区域光)。不同光源的区别主要体现为照明范围的不同:
Directional Light如同太阳光,光线会从一个方向照亮整个场景。在Forward Rendering模式下,仅这一种光源可以显示实时阴影。
Point Light就像灯泡,从一个点向周围发射光线并逐渐衰减。
Spotlight像是舞台上的聚光灯,光束按某一方向照射并且限制在一定的范围内。
Area Light通过一个矩形范围向一个方向发射光线,只能被用来烘焙Lightmap。
(2) 环境光与雾。环境光可以认为是Unity提供的一种特殊光源,它会整体地改变场景的亮度而没有方向和范围的概念。环境光在场景中是始终存在的。关于环境光和雾效,在菜单栏【Window】→【Lighting】中可以进行设置。([注]:雾效对性能会造成一定影响,在硬件性能较差时应当慎用)
(3) LightMapping技术。当游戏场景中包含大量多边形时,实时光源和阴影的计算对游戏性能的影响会很大。这时更适合的方案是使用Lightmapping技术——将光线效果预渲染成贴图使用到多边形上来模拟光影效果。使用这种方式可以不用担心光源数量和阴影造成的性能开销而获得高质量的光影效果。最新版本的Unity使用了全新的Enlighten系统,提供了Precomputed Realtime GI Lighting和Baked GI Lighting技术,Unity社区有相关文
4000
章详细说明了这些。
(4) Light Probe(灯光探测器)。Lightmapping技术可以解决静态场景的光影问题,但是它无法和场景中的动态模型交互,使得运动中的模型不能和场景中的光线融合到一起从而显得不真实。Light Probe可以解决这个问题。通过在场景中摆放不同的Probe对场景各处的光影信息进行采样,场景中运动的模型就能够参考这些Probe的位置模拟出与静态场景类似的光影效果。
2. 地形。Terrain是Unity提供的一个地形系统,主要用来表现庞大的室外地形,特别适合表现自然环境。
3. 天空。在Unity中,可以使用Skybox技术来表现天空的效果。
4. 粒子。Unity中的粒子功能非常强大,它可以用来表现游戏中的魔法、云、烟火和其他特殊效果。
5. 物理。Unity内部集成了NVIDIA PhysX物理引擎,可以用来模拟刚体运动、布料等物理效果,也包括射线、触发器等功能。Unity的物理模拟还可以分层,可以指定只有某些Layer(层)中的物体才会发生指定的物理效果。
6. Shader(着色器)。Shader是3D游戏中的重要组成部分,它能够对3D对象表面的纹理和特性进行处理,表现出各种材质效果。Unity提供了丰富的内置Shader,同时也支持自定义Shader。Shader提供了各种材质属性,支持CG语言。
7. 动画系统。Unity4.0引入了全新的Mecanim动画系统,使用状态机系统来控制动画逻辑,提供了更强大的功能。
四、小结
Hello World部分到此就告一段落了。在这一部分中,首先简单地介绍了一下Unity,然后通过一个“Hello World”程序来了解使用Unity开发游戏的环境和流程,之后介绍了常用的调试方法,最后简单介绍了光照、地形、天空、粒子、物理、着色器、动画等各个模块。
这一部分是入门部分,是使用Unity开发游戏的基础,同样也是我本人踏上Unity之旅的第一步,对于Unity的各个模块只是进行了最简单的理解而没有深入。本部分的目的在于初步了解Unity,熟悉Unity编辑器的布局与命令以及使用Unity开发游戏的基本操作。在之后的旅途中,将会伴随着实战一步步深入了解Unity的各个模块。
相关文章推荐
- Linux 自检和 SystemTap
- Kinect结合Unity3D引擎开发体感游戏(一)
- Python 七步捉虫法
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- C++软件添加dump调试打印日志(推荐)
- 在ASP.NET 2.0中操作数据之七十二:调试存储过程
- 讲解WordPress开发中一些常用的debug技巧
- 必备的JS调试技巧汇总
- HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
- JavaScript程序设计之JS调试
- 可以用来调试JavaScript错误的解决方案
- 如何调试异步加载页面里包含的js文件
- jQuery下的Ajax调试步骤
- 调试一段PHP程序时遇到的三个问题
- JavaScript高级程序设计 错误处理与调试学习笔记
- Javascript调试脚本的经验之谈第1/2页
- 在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
- Android App调试内存泄露之Cursor篇