首页 > 代码库 > unity3d游戏开发之我见

unity3d游戏开发之我见

 游戏引擎想必大家都有所耳闻吧,比如当你在喝着可乐,盯着电脑屏幕,看到游戏场景内的角色在自己键盘鼠标的控制之下,享受着这种游戏的操作感,这种感觉之所以爽快,是因为他满足了你自己的思维(我想干什么就可以干什么),慢着,今天我们不谈论游戏心理,我们今天谈的是到底是什么让我们如此吸引而引人入胜呢?——游戏引擎

  众所周知,游戏引擎对于游戏来说,那真的像跑车的引擎一样,是游戏表现的核心,现在为止,一些大型的游戏公司都有自己开发或收购的游戏引擎,比如Unreal(虚幻),暴雪自家的魔兽引擎,还有保守争议的显卡危机(呵呵,是孤岛危机)的CryEngine,当然不同的引擎会有不同的性能表现和画面风格,比如写实的Unreal(如图左),和漫画田园风格的魔兽(如图右).

技术分享                                        
  OK,那么今天我就来推荐一下我所熟知的一款游戏引擎——Unity3D
  
技术分享
  作为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的魅力,而它的魅力还不仅仅是这些,后面你们还会看到更加惊喜的内容,希望你们能够喜欢上这个精致而灵巧强大的游戏引擎.来自【狗刨学习网

unity3d游戏开发之我见