我正在研究和学习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) { …Run Code Online (Sandbox Code Playgroud)