我学xingo golang服务器之-Unity3d c#多玩家同屏出生过程和AI处
上一节 GameMgr.BornPlayer(bc);
GameMgr.PlayerIDS.Add(bc.Pid);
进行出生同屏连接的玩家 using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Pb;
using UnityEngine.UI;
public class GameMgr : MonoBehaviour {
public static ArrayList PlayerIDS = new ArrayList();
public static string GameIP;
public static int GamePort;
private static BroadCast mBc;// 记录传过来的bc数据
private static Player mPlayer; //记录传过来的player数据
private static ArrayList mPlayers; //传递过来的player集合
private static bool flag = false; //第一种实例方式
private static bool flag1 = false; //第二种实例方式
// Use this for initialization
void Start () {
mPlayers = new ArrayList();
}
// Update is called once per frame
void Update () {
if (flag || flag1)
{
OnBorn();
}
}
private void OnBorn()
{
if (flag)
{
var player = Instantiate(Resources.Load<GameObject>("16_2"));
var controller = player.GetComponent<AIController>();
flag = false;
if (controller)
{
controller.InitPlayer(mBc.Pid,mBc.P.X,mBc.P.Y,mBc.P.Z,mBc.P.V);
}
else
{
Debug.Log("Controller null");
}
}
if (flag1)
{
flag1 = false;
for (int i = 0; i < mPlayers.Count; ++i)
{
var player = Instantiate(Resources.Load<GameObject>("16_2"));
var controller = player.GetComponent<AIController>();
var data = (Player)mPlayers[i];
controller.InitPlayer(data.Pid,data.P.X,data.P.Y,data.P.Z,data.P.V);
}
}
}
public static void BornPlayer(BroadCast bc)
{
mBc = bc;
flag = true;
}
public static void BornPlayer(Player player)
{
mPlayer = player;
flag1 = true;
}
public static void BornPlayer(ArrayList players)
{
mPlayers.Clear();
mPlayers = players;
flag1 = true;
}
}
题外话:GameMgr类是继承Unity3d的MonoBehaviour,MonoBehaviour是unity3d里面特有的一个类,可以直接挂载在GameObject上面, Update() 函数在unity3d里面是每一帧都被调用,刷新很快,可以做循环监听事件 public static void BornPlayer(BroadCast bc)
{
mBc = bc;
flag = true;
}
flag=true,flag1=true; var player = Instantiate(Resources.Load<GameObject>("16_2"));
var controller = player.GetComponent<AIController>();
这样就会实例一个玩家, 最终我们知道了所有的玩家都是在GameMgr.cs Update函数里面产生的; 下面看看游戏里面同屏玩家的AI和玩家的AI: 再看看动态生成的同屏玩家AIController.cs,这是挂载在同屏玩家上面的Prefab脚本 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |