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

发表于2017-06-02
评论0 5.2k浏览

       这是介绍开发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即时战略游戏开发(十四)伤害更新信息显示、销毁单位、爆炸效果

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论