相关疑难解决方法(0)

如何在UNet/Unity5中同步非玩家GameObject属性?

我正在研究和学习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)

c# multiplayer unity-game-engine unity5 unity-networking

6
推荐指数
1
解决办法
2万
查看次数