public void OnPrivateMessage(string sender, object message, string channelName) { switch (message.GetType().ToString()) { // Если сообщение с типом byte case "System.Byte[]": { texture2D.LoadImage((byte[])message); texture2D.Apply(); break; } // Если сообщение с типом string case "System.String": { Photon.Realtime.Player[] players = PhotonNetwork.PlayerListOthers.ToArray <Photon.Realtime.Player>(); if (sender != PhotonNetwork.LocalPlayer.NickName) { AddMessageToChat(sender, message); } break; } case "System.Object[]": { var messageArray = (object[])message; var drawMode = (Glossary.DrawMode)messageArray[0]; if (drawMode == Glossary.DrawMode.Brush) { _drawController.DrawBrush((Vector3[])messageArray[1], (Vector2)messageArray[2], ui.arCamera.GetComponent <Camera>(), ui.Model.transform.position); } else if (drawMode == Glossary.DrawMode.Circle || drawMode == Glossary.DrawMode.Rectangle || drawMode == Glossary.DrawMode.Triangle) { var shapeToDraw = Instantiate(_drawModeToPrefab[drawMode]); _drawController.DrawObject(drawMode, shapeToDraw, (Vector3[])messageArray[1], (Vector2)messageArray[2], ui.arCamera.GetComponent <Camera>(), ui.Model.transform.position); } break; } case "System.Int32": { var mode = (Glossary.DrawMode)message; if (mode == Glossary.DrawMode.Clear) { _drawController.Clear(); } break; } default: { Debug.Log($"Message had an unexpected type {message.GetType().ToString()}"); break; } } }