示例#1
0
    public void SendStatsToNewPlayer(PhotonPlayer NewPlayer)//посылаем статы всех новому игроку при подключении
    {
        SyncDate date = new SyncDate();

        players = GameObject.FindGameObjectsWithTag("Player");

        date.ID          = new int[players.Length];
        date.Deads       = new int[players.Length];
        date.Kills       = new int[players.Length];
        date.KillsSeries = new int[players.Length];
        date.myKillerId  = new int[players.Length];
        date.GameTime    = TimeGame;
        date.FB          = FB;
        date.ItemCoin    = new bool[COINS.transform.childCount];
        date.ItemHP      = new bool[HILLS.transform.childCount];
        date.ItemJump    = new bool[JUMPS.transform.childCount];
        date.ItemSpeed   = new bool[SPEEDS.transform.childCount];

        for (int i = 0; i < players.Length; i++)//статы персов на сцене
        {
            date.ID[i]          = players[i].GetComponent <PhotonView>().viewID;
            date.Deads[i]       = players[i].GetComponent <NETPIG>().Deads;
            date.Kills[i]       = players[i].GetComponent <NETPIG>().Kills;
            date.KillsSeries[i] = players[i].GetComponent <NETPIG>().KillsSeries;
            if (players[i].GetComponent <NETPIG>().MyKiller != null)//если убийца есть
            {
                date.myKillerId[i] = players[i].GetComponent <NETPIG>().MyKiller.GetComponent <PhotonView>().viewID;
            }
            else//если нет
            {
                date.myKillerId[i] = 0;
            }
        }
        for (int i = 0; i < date.ItemCoin.Length; i++)//монетки на сцене
        {
            date.ItemCoin[i] = COINS.transform.GetChild(i).GetComponent <BoxCollider>().enabled;
        }
        for (int i = 0; i < date.ItemHP.Length; i++)//яблочки
        {
            date.ItemHP[i] = HILLS.transform.GetChild(i).GetComponent <BoxCollider>().enabled;
        }
        for (int i = 0; i < date.ItemSpeed.Length; i++)//морковки
        {
            date.ItemSpeed[i] = SPEEDS.transform.GetChild(i).GetComponent <BoxCollider>().enabled;
        }
        for (int i = 0; i < date.ItemJump.Length; i++)//помидорки
        {
            date.ItemJump[i] = JUMPS.transform.GetChild(i).GetComponent <BoxCollider>().enabled;
        }
        RaiseEventOptions options = new RaiseEventOptions {
            TargetActors = new[] { NewPlayer.ID }
        };

        PhotonNetwork.RaiseEvent(100, date, true, options);
    }
示例#2
0
文件: PigInterf.cs 项目: djon22/demo
    public static SyncDate Deserialize(byte[] bytes)
    {
        MemoryStream    memStream = new MemoryStream();
        BinaryFormatter binForm   = new BinaryFormatter();

        memStream.Write(bytes, 0, bytes.Length);
        memStream.Seek(0, SeekOrigin.Begin);
        SyncDate obj = (SyncDate)binForm.Deserialize(memStream);

        return(obj);
    }
示例#3
0
    public void ReciveStatsToNewPlayer(SyncDate date) //прием данных при подключении
    {
        TimeGame = date.GameTime;                     //синхронизация времени
        FB       = date.FB;                           //синхронизация события FB

        for (int i = 0; i < date.ID.Length; i++)
        {
            if (PhotonView.Find(date.ID[i]).gameObject != null)                    //проверяем что игрок все еще на сцене
            {
                GameObject currentPlayer = PhotonView.Find(date.ID[i]).gameObject; //ищем игрока по ID
                currentPlayer.GetComponent <NETPIG>().Deads       = date.Deads[i];
                currentPlayer.GetComponent <NETPIG>().Kills       = date.Kills[i];
                currentPlayer.GetComponent <NETPIG>().KillsSeries = date.KillsSeries[i];
                if (date.myKillerId[i] != 0)
                {
                    currentPlayer.GetComponent <NETPIG>().MyKiller = PhotonView.Find(date.myKillerId[i]).gameObject;
                }
                else
                {
                    currentPlayer.GetComponent <NETPIG>().MyKiller = null;
                }
            }
        }
        for (int i = 0; i < date.ItemCoin.Length; i++)//монетки на сцене
        {
            COINS.transform.GetChild(i).GetChild(0).gameObject.SetActive(date.ItemCoin[i]);
            COINS.transform.GetChild(i).GetComponent <BoxCollider>().enabled = date.ItemCoin[i];
        }
        for (int i = 0; i < date.ItemHP.Length; i++)//яблочки
        {
            HILLS.transform.GetChild(i).GetChild(0).gameObject.SetActive(date.ItemHP[i]);
            HILLS.transform.GetChild(i).GetComponent <BoxCollider>().enabled = date.ItemHP[i];
        }
        for (int i = 0; i < date.ItemSpeed.Length; i++)//морковки
        {
            SPEEDS.transform.GetChild(i).GetChild(0).gameObject.SetActive(date.ItemSpeed[i]);
            SPEEDS.transform.GetChild(i).GetComponent <BoxCollider>().enabled = date.ItemSpeed[i];
        }
        for (int i = 0; i < date.ItemJump.Length; i++)//помидорки
        {
            JUMPS.transform.GetChild(i).GetChild(0).gameObject.SetActive(date.ItemJump[i]);
            JUMPS.transform.GetChild(i).GetComponent <BoxCollider>().enabled = date.ItemJump[i];
        }
    }
示例#4
0
    private void OnEvent(byte eventcode, object content, int senderid)
    {
        switch (eventcode)
        {
        case 100:    //событие передачи данных при подключении к ранее созданной игре
        {
            SyncDate Date = (SyncDate)content;
            ReciveStatsToNewPlayer(Date);
            break;
        }

        case 99:    //запрос мастер клиенту на передачу данных
        {
            if (PhotonNetwork.isMasterClient)
            {
                SendStatsToNewPlayer(PhotonPlayer.Find(senderid));
            }
            break;
        }
        }
    }