大家好,我是Zander,我们接着来开发Rts3D即时战略游戏开发。 现在我们需要知道单位属于谁,是玩家1还是玩家2,以及他们的颜色。每个单位都应该与此信息标注。首先在Scripts文件夹中创建Player脚本,编写脚本
using UnityEngine;
using System.Collections.Generic;
public class Player : MonoBehaviour {
public PlayerSetupDefinition Info;
public static PlayerSetupDefinition Default;
}
然后返回到RTSManager中,修改其中的Start方法
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>();
player.Info = p;
if (!p.IsAi)
{
if (Player.Default == null) Player.Default = p;
go.AddComponent<RightClickNavigation>();
}
}
}
}
现在这些信息都已经设置完,返回到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<Player> ().Info.AccentColor;
foreach (var r in Renderers) {
r.material.color = color;
}
}
}
保存代码,返回到Unity中,把DroneUnit拖拽到场景中,为其添加两个 不同的长方体以便我们看清这个单位是什么颜色
保存一下预设。然后运行Unity,就可以发现DroneUnit有 不同的颜色了。
这章就到这了,欢迎大家加入QQ群:280993838 或者关注我的公众号: