游戏引擎想必大家都有所耳闻吧,比如当你在喝着可乐,盯着电脑屏幕,看到游戏场景内的角色在自己键盘鼠标的控制之下,享受着这种游戏的操作感,这种感觉之所以爽快,是因为他满足了你自己的思维(我想干什么就可以干什么),慢着,今天我们不谈论游戏心理,我们今天谈的是到底是什么让我们如此吸引而引人入胜呢?——游戏引擎
众所周知,游戏引擎对于游戏来说,那真的像跑车的引擎一样,是游戏表现的核心,现在为止,一些大型的游戏公司都有自己开发或收购的游戏引擎,比如Unreal(虚幻),暴雪自家的魔兽引擎,还有保守争议的显卡危机(呵呵,是孤岛危机)的CryEngine,当然不同的引擎会有不同的性能表现和画面风格,比如写实的Unreal(如图左),和漫画田园风格的魔兽(如图右).
OK,那么今天我就来推荐一下我所熟知的一款游戏引擎——Unity3D
Unity3D URL:http://unity3d.com/unity/engine/
作为Unity的使用者,开发者,我对Unity3D引擎的优异性能表现和高度跨平台性给予神一般的敬仰,他集成了MonoDeveloper的编译平台,以C#和javascript为主要的编码语言,貌似还有一个boo(鬼才知道这个语言),为了实现简单代码间类的互相操作,我们都选用C#作为统一的开发语言,而且Unity还对代码的运行效率,资源的开销提供了一个很好的分析工具(如图)
而对于场景的编辑和代码的编写,我会在以后博客陆续放出,下面给大家展示一个例子,相信你会对它有兴趣的.
我在Unity3D里写出一些代码,实现监听鼠标滑轮的事件,继而使得场景内的一个方块的大小也随之改变.
列出代码: Move.cs
using UnityEngine; using System.Collections; public class Move : MonoBehaviour { private float changSize = 0; void Update() { changSize += Input.GetAxis("Mouse ScrollWheel"); transform.localScale = new Vector3(1 + changSize, 1 + changSize,1 + changSize); } }
初始的方块的大小是(1, 1, 1)(如图)
运行结果:
我们看到,方块的大小被滑轮调整到了5倍左右.
下面是资源消耗:
相信大家都已经看到了我的Move.Update()方法占到了总资源的10%左右,这是个不小的开销哦,我们的目的是让Camera.Render获得最大的资源比例,使得它渲染的帧数达到最大.
因此我们做一个优化,代码更改如下:
1 using UnityEngine; 2 using System.Collections; 3 4 public class Move : MonoBehaviour { 5 private float changSize = 0; 6 7 void Update() { 8 if(Input.GetAxis("Mouse ScrollWheel") != 0) 9 { 10 changSize += Input.GetAxis("Mouse ScrollWheel"); 11 transform.localScale = new Vector3(1 + changSize, 1 + changSize,1 + changSize); 12 } 13 } 14 }
OK,我们这次再来看一下运行结果及资源耗费状况
运行资源消耗结果:
立竿见影,我们看到Move.Update()已经控制在了1%左右,而Camera.Render也有所回升,说明我们的代码确实在这样的运行环境下起了意料中的优化作用。
左边的观众,右边的观众,前面的观众,你们是否感受到Unity3D的魅力,而它的魅力还不仅仅是这些,后面你们还会看到更加惊喜的内容,希望你们能够喜欢上这个精致而灵巧强大的游戏引擎.