unity-game-engine - Unity 网络 Material 颜色更改不起作用

标签 unity-game-engine colors network-programming unity-networking

我有一个玩家对象,它具有:网络身份和网络转换。也是一个具有 NetworkManager 的对象。当我连接 2 台电脑时。我可以看到两名球员的 Action 。没事儿。但我的比赛中有两个球。一绿一红。

这是更改球颜色的代码。

public Material Right = null;
     public Material Left = null;

      void OnCollisionEnter(Collision collider)
          { 
       if (collider.gameObject.name == "_RightBall")
             {  randomnumb = UnityEngine.Random.Range(0, 11);
                      if (randomnumb >= 5)
                      {
                          Right.color = Color.red;  
                     }
                      else
                      {
                          Right.color = Color.green;               
                     }
             }
       }

当玩家击球时,球会改变颜色。这对两个玩家来说都效果很好。但当球员改变球的颜色时,他自己的颜色也会改变。不适合其他玩家。我希望当玩家改变球的颜色时,所有玩家都能看到相同的颜色。我尝试添加网络身份并检查我的球的“本地玩家权限”。但没有成功。

最佳答案

老方法

RPC 函数非常适合您所讨论的内容。您可以通过 RPC 发送多个 var。它不发送变量名称,但发送其值。

var ballcolor : int = 2;  

如果您发送 ballcolor ,您将发送数字 2。在另一边您会感兴趣。

var ballcolor : int = 0;
@RPC
function WhatIsTheStatusOfBall( incomingBallColor : int){
   ballcolor = incomingBallColor;
}  

现在球颜色为 2。

您可以传递多个内容,例如

@RPC
function WhatIsTheStatusOfBall(BallLocation : Vector3, BallAngle : float, incTraveSpeed : float){  

然后你就可以在本地使用这些变量了。

这里有一些有关如何使用它的更多信息。 http://unity3d.com/support/documentation/Components/net-RPCDetails.html

<小时/>

回复您的评论:

新方法

[Command][ClientRpc] 在新的网络系统中是等效的。
您可以从客户端到服务器[Command],从服务器到所有客户端[ClientRpc]http://docs.unity3d.com/Manual/UNetActions.html

此外,您还可以使用 NetworkBehaviourconnectionToClient 上的 Send() 函数向各个客户端发送消息。 http://docs.unity3d.com/ScriptReference/Networking.NetworkConnection.Send.html

关于unity-game-engine - Unity 网络 Material 颜色更改不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33716460/

相关文章:

c# - 使用 Kinect 手势检测

ios - Unity 5.1.1f1 Facebook SDK 6.2.2 错误400 : Bad request on getting player picture on iOS

javascript - 给调色板元素边框或标题

excel - 如何指定范围而不是偏移量,excel VBA?

security - 拦截并分析网络中的所有电子邮件流量

windows - WSAGetLastError() 只是 GetLastError() 的别名吗?

c++ - 我需要什么组件来监控 PC 上的互联网流量?

Swift 和预制件?

ios - 是否可以在 Spritekit 项目中以编程方式更改纹理色调?

bundle - Unity - 不要加载相同的资源包两次