这是介绍开发RTS3D即时战略游戏开发的系列教程。下面介绍的是第一篇文章,关于在场景添加Manager以及玩家初始化信息的内容,其中本次所需要的资源大家可以在文章末尾所给的链接中下载。
首先、我们要在下载好的工程包中找到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 StartingUnits = new List(); 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 Players = new List(); // 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
Unity实战RTS3D即时战略游戏开发系列:
Unity实战 RTS3D即时战略游戏开发(二):玩家状态显示
Unity实战 RTS3D即时战略游戏开发(三):单位选中处理
Unity实战 RTS3D即时战略游戏开发(四):鼠标管理器
Unity实战 RTS3D即时战略游戏开发(五):NavigationMesh自动寻路
Unity实战 RTS3D即时战略游戏开发(六):信息显示
Unity实战 RTS3D即时战略游戏开发(七):HUD的使用小地图显示
Unity实战 RTS3D即时战略游戏开发(八):HUD的使用单位信息显示
Unity实战 RTS3D即时战略游戏开发(九):行为管理器Action的使用
Unity实战 RTS3D即时战略游戏开发(十):可建造地点标示
Unity实战 RTS3D即时战略游戏开发(十一)AiController
Unity实战 RTS3D即时战略游戏开发(十二):建造AI、生产AI
Unity实战 RTS3D即时战略游戏开发(十三):战斗AI的控制
Unity实战 RTS3D即时战略游戏开发(十四)伤害更新信息显示、销毁单位、爆炸效果