|
文/Zander
今天来分享一个关于用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的脚本,它存储并管理着整个游戏中的大部分有用的功能,其他部分需要访问或者查找,我们把它设计成一个单例模式:
- using UnityEngine;
- using System.Collections;
-
- public class RtsManager : MonoBehaviour {
-
- public static RtsManager Current = null;
-
- // Use this for initialization
- void Start () {
- Current = this;
- }
-
- // Update is called once per frame
- void Update () {
-
- }
- }
复制代码
然后返回Unity中,在Hierarchy中创建一个空对象并命名Manager,之所以叫Manager是因为上面要挂载一些管理脚本。RTSManager就是其中之一,现在就来添加脚本,把写好的RTSManager脚本直接拖拽到Hierarchy中的Manager上即可。如图:
下面我们来创建一个Player类来持有一些玩家所需的数据,在Scripts新建一个Definitions文件夹,在其底下新建一个PlayerSetupDefinition脚本,这个脚本不需要继承于MonoBehavior,但是为了让这个类易读并能在检视面板上可见,所以我们需要把它序列化。在这个脚本中,我们需要定义玩家的姓名,起始的位置、要添加一些颜色或标识等来区分它们、然后还需要一个初始单位列表,接下来还要知道它需不需要Ai控制、玩家积分,然后保存。
- using UnityEngine;
- using System.Collections.Generic;
-
- [System.Serializable]
- public class PlayerSetupDefinition {
-
- public string Name; //玩家名字
-
- public Transform Location; //起始位置
-
- public Color AccentColor; //玩家标识颜色
-
- public List<GameObject> StartingUnits = new List<GameObject>();
-
- public bool IsAi; //是不是AI控制
-
- public float Credits; //积分
- }
复制代码
然后切换到RTSManager中,来定义这个脚本进行管理:
- using UnityEngine;
- using System.Collections.Generic;
-
-
- public class RtsManager : MonoBehaviour {
-
- public static RtsManager Current = null;
-
- public List<PlayerSetupDefinition> Players = new List<PlayerSetupDefinition>();
-
- // Use this for initialization
- void Start () {
- Current = this;
- }
-
- // Update is called once per frame
- void Update () {
-
- }
- }
复制代码
定义完后,来到Unity中,能看到Players的初始值为0,我们把它改为2,然后把Player1和Player 2的属性设置一下如图:
先说到这来,本次游戏资源的链接:链接: https://pan.baidu.com/s/1gfqPc6R 密码: 9xkm
|
|