Я делаю простую игру в ЛВС, чтобы просто подружиться в Unity Networking. Все, что он должен делать, - это когда игрок нажимает квадрат в сетке, он меняет его на синий. Моя проблема заключается в том, что LAN Host нажимает на квадрат, он обновляется только локально и не обновляет клиентов. Когда клиент нажимает на квадрат, он обновляется локально, и хост LAN обновляется, но другие клиенты не обновляются. Все мои сетки имеют прикрепленный к ним сетевой идентификаторПростая игра для Unity5 LAN, серверное обновление клиентов не
Любые идеи?
Heres код:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class Player_Paint : NetworkBehaviour {
[SyncVar]GameObject syncGridPiece;
GameObject gridPiece;
void Update() {
Paint();
TransmitGridColours();
}
void Paint(){
if(isLocalPlayer && Input.GetMouseButtonDown(0)){
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(hit.collider != null){
print(GameObject.Find (hit.transform.name));
gridPiece = hit.collider.transform.gameObject;
gridPiece.GetComponent<SpriteRenderer>().color = Color.blue;
}
}
}
[Command]
void CmdProvideGridColourToServer(GameObject gridPiece){
if(gridPiece){
syncGridPiece = gridPiece;
syncGridPiece.GetComponent<SpriteRenderer>().color = Color.blue;
}
}
[Client]
void TransmitGridColours(){
if(isLocalPlayer){
CmdProvideGridColourToServer(gridPiece);
}
}
}
"if (gridPiece) {"? Это GameObject ... BTW вам просто нужно обновить переменную синхронизации, все свойства/значения/и т. Д. Были перенесены на сервер с помощью «локального» игрока (т. Е. Измените цвет, затем нажмите вверх) –
«if (gridPiece) {«было, когда игра начинается с того, что GO пуст. только заселяется, когда его щелкают. просто поставьте это там, чтобы остановить его от того, чтобы бросить мне ссылочные ошибки. Я не совсем понимаю, что вы имеете в виду. когда я делаю «syncGridPiece = gridPiece»; is not, что обновление переменной? – justinC19
[Command] == Позволяет локальному проигрывателю отправлять данные на сервер (через [SyncVar] tagged member vars.). [Клиент ** Подключиться **] == Получать данные с помощью метода, помеченного префиксом [Command] –