Unity实战 RTS3D即时战略游戏开发(六) :信息显示
发表于2017-06-03
这是RTS3D即时战略游戏开发系列的第六篇文章,为了让玩家可以明显的去区分游戏中的不同角色,所以这篇文章要讲解的是游戏中的信息显示。
现在我们需要知道单位属于谁,是玩家1还是玩家2,以及他们的颜色。每个单位都应该与此信息标注。首先在Scripts文件夹中创建Player脚本,编写脚本
using UnityEngine; using System.Collections.Generic; public class Player : MonoBehaviour { public PlayerSetupDefinition Info; public static PlayerSetupDefinition Default;
}
void Start () { Current = this; foreach (var p in Players) { foreach (var u in p.StartingUnits) { var go = (GameObject)GameObject.Instantiate(u, p.Location.position, p.Location.rotation); var player = go.AddComponent(); player.Info = p; if (!p.IsAi) { if (Player.Default == null) Player.Default = p; go.AddComponent(); } } } }
现在这些信息都已经设置完,返回到Unity中我们看看它是怎么应用的, 运行Unity,就可以发现每个DroneUnit中都有一个Player脚本了。现在就可以获取每个玩家单位的信息了。
接下来展示游戏中玩家属于谁,强调色在这里将特别有用。在这里我们使用一个特别简单的方法,就是将材质颜色设置到立方体上,首先创建一个叫MarkColor的脚本,
using UnityEngine; using System.Collections; public class MarkColor : MonoBehaviour { public MeshRenderer[] Renderers; // Use this for initialization void Start () { var color = GetComponent ().Info.AccentColor; foreach (var r in Renderers) { r.material.color = color; } } }
保存一下预设。然后运行Unity,就可以发现DroneUnit有 不同的颜色了。
Unity实战RTS3D即时战略游戏开发系列:
Unity实战 RTS3D即时战略游戏开发(二):玩家状态显示
Unity实战 RTS3D即时战略游戏开发(三):单位选中处理
Unity实战 RTS3D即时战略游戏开发(四):鼠标管理器
Unity实战 RTS3D即时战略游戏开发(五):NavigationMesh自动寻路
Unity实战 RTS3D即时战略游戏开发(七):HUD的使用小地图显示
Unity实战 RTS3D即时战略游戏开发(八):HUD的使用单位信息显示
Unity实战 RTS3D即时战略游戏开发(九):行为管理器Action的使用
Unity实战 RTS3D即时战略游戏开发(十):可建造地点标示
Unity实战 RTS3D即时战略游戏开发(十一)AiController
Unity实战 RTS3D即时战略游戏开发(十二):建造AI、生产AI
Unity实战 RTS3D即时战略游戏开发(十三):战斗AI的控制
Unity实战 RTS3D即时战略游戏开发(十四)伤害更新信息显示、销毁单位、爆炸效果