Unity实战 RTS3D即时战略游戏开发(一)

2017-06-05
今天来分享一个关于用Unity创建3D即时战略游戏的开发,在这个游戏中,你能创建属于自己的即时战略游戏,包括完整的:爆炸、敌人AI、单位、建筑地形、导航AI、战斗、资源还有更多,如果你想不费劲的就做一个,或者你知道捷径做个像样的,那么本次开发就能让你很轻松的创建、启动并运行属于你自己的RTS游戏。

游戏中的功能大概介绍一下:

1、玩家控制、以及界面实时显示

2、操控相机移动

3、单位信息UI显示

4、鼠标输入控制

5、Ai控制(自动寻路、单位追踪、自动生产单位、自动攻击)

6:战争生产和消耗

7、一些简单的特效

游戏完成后大概是是这个样子,如图:


游戏资源大家可以在这下载:链接: https://pan.baidu.com/s/1slpiDuX 密码: r2yw

首先、我们要在下载好的工程包中找到Scenes文件夹并打开RTSMap场景。

然后 、我们来创建玩家和敌人的出生点位置,如图所示,在Map中创建两个空物体,分别取名为Player1Start,Player2Start,为了方便我们看到已定义好的Player1Start和Player2Start,我们从检视面板的左上角选择ICON,分别选择一个颜色Icon


场景弄好了,现在我们来管理我们的场景,首先在Assets下创建一个文件夹Scripts,然后再Scripts下再创建一个叫RtsManager的脚本,它存储并管理着整个游戏中的大部分有用的功能,其他部分需要访问或者查找,我们把它设计成一个单例模式:
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class RtsManager : MonoBehaviour {  
  5.   
  6.     public static RtsManager Current = null;  
  7.   
  8.     // Use this for initialization  
  9.     void Start () {  
  10.         Current = this;  
  11.     }  
  12.       
  13.     // Update is called once per frame  
  14.     void Update () {  
  15.       
  16.     }  
  17. }  
复制代码

然后返回Unity中,在Hierarchy中创建一个空对象并命名Manager,之所以叫Manager是因为上面要挂载一些管理脚本。RTSManager就是其中之一,现在就来添加脚本,把写好的RTSManager脚本直接拖拽到Hierarchy中的Manager上即可。如图:

下面我们来创建一个Player类来持有一些玩家所需的数据,在Scripts新建一个Definitions文件夹,在其底下新建一个PlayerSetupDefinition脚本,这个脚本不需要继承于MonoBehavior,但是为了让这个类易读并能在检视面板上可见,所以我们需要把它序列化。在这个脚本中,我们需要定义玩家的姓名,起始的位置、要添加一些颜色或标识等来区分它们、然后还需要一个初始单位列表,接下来还要知道它需不需要Ai控制、玩家积分,然后保存。
  1. using UnityEngine;  
  2. using System.Collections.Generic;  
  3.   
  4. [System.Serializable]  
  5. public class PlayerSetupDefinition  {  
  6.   
  7.     public string Name;  //玩家名字  
  8.   
  9.     public Transform Location;  //起始位置  
  10.   
  11.     public Color AccentColor;   //玩家标识颜色  
  12.   
  13.     public List<GameObject> StartingUnits = new List<GameObject>();  
  14.   
  15.     public bool IsAi;   //是不是AI控制  
  16.   
  17.     public float Credits;  //积分  
  18. }
复制代码

然后切换到RTSManager中,来定义这个脚本进行管理:

  1. using UnityEngine;  
  2. using System.Collections.Generic;  
  3.   
  4.   
  5. public class RtsManager : MonoBehaviour {  
  6.   
  7.     public static RtsManager Current = null;  
  8.   
  9.     public List<PlayerSetupDefinition> Players = new List<PlayerSetupDefinition>();  
  10.   
  11.     // Use this for initialization  
  12.     void Start () {  
  13.         Current = this;  
  14.     }  
  15.       
  16.     // Update is called once per frame  
  17.     void Update () {  
  18.       
  19.     }  
  20. }  
复制代码


定义完后,来到Unity中,能看到Players的初始值为0,我们把它改为2,然后把Player1和Player 2的属性设置一下如图:


先说到这来,本次游戏资源的链接:链接: https://pan.baidu.com/s/1gfqPc6R 密码: 9xkm

最新评论
暂无评论
参与评论

2025 ChinaJoy跑会指南
推广
商务合作 查看更多

编辑推荐 查看更多
【爆款新游】【潜力佳作】分析系列
推广