Unity3d 引擎原理详细介绍
体系结构
为了更好地理解游戏的软件架构和对象模型,它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的,它的主要原则。
Unity3D 引擎
Unity3D的是一个屡获殊荣的工具,用于创建交互式3D应用程序在多个platforms.Unity3D由游戏引擎和编辑器。该引擎包含的软件组件,在游戏的研究与开发中最常见的和经常性的任务。发动机所涵盖的主题包括声音,图形,物理和网络功能。该引擎支持C#,Boo,和JavaScript脚本编程。
另一个部分是Unity编辑,作为脚本和其他组件,包含游戏场景设置和游戏的预览窗口(见图4)分层对象检查项目面板的集成开发环境。它还配备了几个多语言脚本编辑器和一个独特的预制装配系统,将在后面解释。
图4:Unity3D编辑器
有几个Unity的许可证。Unity基本功能有限的免费PC的MAC和Web
游戏逻辑
此模块管理当前玩家和AI配置倒计时timerand当前的游戏状态(暂停,等待网络回复)。
AI(人工智能(Artificial Intelligence) ,英文缩写为AI)
AI模块包含背后的逻辑单元,组和球员AI.The单位的AI寻路或障碍物避免使用不同的转向行为控制单元的状态。组AI管理组的行为和活动,如组寻路。更高的层次上管理播放机的所有组由播放器模块。
人工智能机器学习保存和加载它的数据使用的持久性数据模块的接口。
Persistant data持久性数据
此模块是负责数据之间不同的游戏sessions.Among其他应可用于保存和加载,存储查找表和图寻路模块和管理学习AI的accumulateddata的机器。
Game actors游戏参与者
游戏参与者在游戏中的地形,单位或建筑物。他们的3D模型获得通过Unity3D的渲染管线的可视化。每场比赛的演员拥有AI模块,控制它的行为。
Steering behaviours指导行为
指导行为的计算力量,影响如何以及如何快速自主游戏代理能动,应该可以用于避障,人流或简单的寻找任务。
Pathfinding寻路
这模块负责创建一个pathgrid,障碍物信息收集和提供各种寻路请求aninterface的。为了获得更好的性能的一些信息保存到从磁盘中加载。
Input输入
此模块跟踪用户的输入,对其进行处理,并生成反馈。
Network网络
网络模块是负责所有游戏演员的状态管理是保持比赛状态,在两台机器上都保持一致,以避免抖动网络单元运动网络game.Another责任。
GUI
图形用户界面(GUI)显示所有按钮,菜单,在小地图和倒数计时器。它也负责为这些元素的功能和交互依赖与用于此目的的游戏的逻辑模块。
3D渲染
该模块主要管理Unity3D的。场景的主摄像头确定需要渲染的对象,并把它们发送通过渲染管线。
Unity层次的地图
场景视图的地图
现在所有的游戏对象从顶部面板底部进行说明。
CWalls
这个对象包含自定义绘制墙节点和墙壁边缘。另一种是使用自定义绘制墙壁到calculatethem取决于地图的几何。
Directional light(定向光)
此灯仅用于计算地形光照贴图。关闭之后,由于性能的原因。
Game Music(游戏音乐)
持有游戏的主要音乐和播放现场启动。
GameController(游戏控制器)
GameController游戏物体持有并管理所有的游戏对象,管理游戏的逻辑。它包括以下对象:
CursorController(光标控制器):
管理光标的外观和背后的逻辑。
GameInstantiator(游戏实例化):
这个重要的游戏对象是负责实例化其他对象需要创建非特异性顺序。
GameInstantiator in the Inspector
GameController in the Hierarchy
GameInstantiator持有的的地图,PathCreator路径创建和管理障碍,管理球员配置和设置,是用来处理用户输入的的InputControl游戏物体,游戏场游戏物体和参考玩家游戏物体上的建筑物referenes定义了可播放的区域的地图。
它还包含了玩家的重生点和自定义路径和墙壁的引用。
GUI
拥有地图的所有GUI对象。
Machine Learning Controller
此游戏物体控制的所有功能,机器学习需要。
spawn1, spawn2
实际玩家的重生点。重生点的标志是绿色立方体“场景视图。
HPaths
自定义路径节点,在地图的边缘。自定义节点在场景编辑器中标记,并概述红线。
Main Camera(主摄像机)
现场的主摄像头和音频监听。所有的3D声音是从相机的角度观察。
PlayArea(游戏场)
定义实际可玩的地图区域。
Base Prefabs(基地预制)
散落在地图上的建筑物。
Terrain(地形)
Unity地形对象。
TestRunner
一个物体,用于运行单元测试与Unity3D的的单位testingframework
图5:MVC模式的体系结构表示
模型包含了所有的游戏对象,组件和数据文件。游戏物体的渲染器和摄像机对象的访问。
视图呈现模型和主要管理Unity3D的引擎渲染。它需要accessthe持有模型的3D模型,纹理,材质和效果。它还具有什么输入选项的影响。
控制器接收用户输入并调用模型对象上的方法反应。这是在我的游戏中所表示的输入子系统。用户能影响与他的输入的视图。
Multiplatform Development(多平台发展)
Unity允许部署项目在不同的平台上有轻微的变化。演示和功能在很大程度上是保持取决于平台的capabilities.However,在某些领域,如在不同的设备上的输入机制存在重大分歧。
抽象工厂设计模式应用于设计这些组件。
The Abstract Factory Pattern抽象工厂模式
图6:抽象工厂模式
抽象工厂模式(见图6)保护客户从不同的平台上实现相同的概念在不同的APC与平台是一家集的AbstractProduct类。这些类表示一个概念,是支持所有的抽象工厂platforms.An类声明创建单一产品的经营,ConcreteFactory类代表一个特定的平台。
客户端只使用抽象工厂和抽象产品的方法,因此从一个平台的具体实施保护。
Input and Persistant Data(输入和持久性数据)
主要有两个方面的游戏,不同的实施要求是输入机制和usageof的持久性文件的数据。
图7:输入子系统结构摘自
这仅仅是一个小所涉及的所有平台和命令,选择用于演示的摘录。
InputManager被附加到游戏物体在场景中的InputControl。它调用CommandImplementor的Execute方法的每一帧里面的更新功能。执行方法的CommandImplementor遍历所有添加的命令,检查他们的执行情况表示满意,并调用Execute方法,如果是这样。
图9:游戏扩大统计窗口右上角的视图
这是说,可以结合Unity若干个对象,共享相同的材料制成的,在运行时,在一个单一的绘制调用的绘制在一起。这种方法被称为动态配料[18]。图9显示了66战平调用以下来源所造成的一个场景:
(GUI)图形用户界面
8绘制调用之缩小贴图按钮,,倒计时倒计时文本的+24个图斑+8号楼地图斑+1相机地图现货。总结41
图10:仿照地形突出部分
这种技术被丢弃创造新的地形,因为这个过程会非常complicatedcompared Unity的地形系统,纹理大小是非常大的或质量受到影响。*地形:地形移动系统移动系统是一个解决方案,可通过Unity资产商店T4M地形可以用于移动设备,并可以转换成Unity的地形。原来,这个解决方案的性能是不够的游戏。
地形最终解决方案是使用Unity地形引擎,具有非常低的质量设置。这是唯一可能后Unity3.4发布于2011年7月加入Unity地形对移动通信系统的支持。
GUI-Optimization(GUI优化)
该的Unity引擎提供两种方式来实现GUI。一种方式是使用Unity的GUI的系统UnityGUI,需要它的功能,是一个特殊的功能calledinside名为OnGUI(),即执行每帧两次和onceevery事件的。这个系统只用于主菜单,并暂停菜单,在allvalues??需要计算外OnGUI功能。
GUI纹理用于所有其他GUI元素象的GUI按钮和小地图上以维持性能。GUI纹理的平面图像中显示的2D和每帧渲染一次。
Script-Optimizations(脚本优化)
为了授予脚本的性能高,最便宜的方法进行跟踪与profiler.It横空出世,被称为最昂贵的方法可以通过寻路或转向行为子系统。寻路已被优化,如下文所述在AI部分。有人还提出确保昂贵的功能,如转向行为和其他AI程序不会调用每一个帧。