Я работаю и изучаю некоторые основы Unity 5, UNET и сетей. Я сделал простую 3D-игру, в которой вы ходите и меняете цвета объектов. Но я хочу сделать его многопользовательским сейчас, и у меня много проблем с выяснением того, как отправить изменения по сети, чтобы все игроки могли видеть изменение цвета одного игрока.
Часть проблемы заключается в том, что было трудно найти ответ, используя более новый сетевой движок UNET. И иногда я сталкиваюсь с ответами, которые относятся к более старому пути.
Итак, главный вопрос заключается в том, как изменить сетевое свойство GameObject, не являющегося игроком? Цвет, форма, размер и т.д.
Вот некоторый код, который у меня есть сейчас - и у меня было много разных версий, поэтому я просто опубликую текущую:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class Player_Paint : NetworkBehaviour {
private int range = 200;
[SerializeField] private Transform camTransform;
private RaycastHit hit;
[SyncVar] private Color objectColor;
[SyncVar] private GameObject objIdentity;
void Update () {
CheckIfPainting();
}
void CheckIfPainting(){
if(Input.GetMouseButtonDown(0)) {
if (Physics.Raycast (camTransform.TransformPoint (0, 0, 0.5f), camTransform.forward, out hit, range)) {
string objName = hit.transform.name;
CmdPaint(objName);
}
}
}
[ClientRpc]
void RpcPaint(){
objIdentity.GetComponent<Renderer>().material.color = objectColor;
}
[Command]
void CmdPaint(string name) {
objIdentity = GameObject.Find (name); //tell us what was hit
objectColor = new Color(Random.value, Random.value, Random.value, Random.value);
RpcPaint ();
}
}
Я пробовал еще кучу решений, включая написание отдельного скрипта для объектов, цвет которых я хочу изменить, включая [SyncVar] и функции перехвата. Я также пробовал Debug.Log для каждой из функций, которые, как я ожидаю, будут обновлять объекты на клиентах, и они выполняются с ожидаемыми данными.
Я действительно не знаю, что еще делать. Я чувствую, что это ОЧЕНЬ простая вещь, которую я хочу сделать, но я не сталкивался с синхронизацией неигровых GameObject в каких-либо вопросах, учебниках или других ресурсах. Любые идеи вообще будут полезны, спасибо.