Unity Network Material 颜色改变不起作用
Unity Network Material color change does not work
我有一个播放器对象:网络标识和网络转换。也是一个具有 NetworkManager 的对象。当我连接 2 台电脑时。我可以看到两个球员的动作。那也行。但是我的游戏中有两个球。一绿一红。
这是改变球颜色的代码。
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;
}
}
}
当玩家击球时,球会改变颜色。它对两个玩家都很好。但是当球员改变球的颜色时,球的颜色也会随之改变。不适合其他玩家。当玩家改变球的颜色时,我希望所有玩家看到相同的颜色。我尝试添加 Network Identity 并检查 "Local Player Authority" 我的蛋蛋。但是没有用。
老办法
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
此外,您可以使用 NetworkBehaviour
的 connectionToClient
上的 Send()
函数向各个客户端发送消息。 http://docs.unity3d.com/ScriptReference/Networking.NetworkConnection.Send.html
我有一个播放器对象:网络标识和网络转换。也是一个具有 NetworkManager 的对象。当我连接 2 台电脑时。我可以看到两个球员的动作。那也行。但是我的游戏中有两个球。一绿一红。
这是改变球颜色的代码。
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;
}
}
}
当玩家击球时,球会改变颜色。它对两个玩家都很好。但是当球员改变球的颜色时,球的颜色也会随之改变。不适合其他玩家。当玩家改变球的颜色时,我希望所有玩家看到相同的颜色。我尝试添加 Network Identity 并检查 "Local Player Authority" 我的蛋蛋。但是没有用。
老办法
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
此外,您可以使用 NetworkBehaviour
的 connectionToClient
上的 Send()
函数向各个客户端发送消息。 http://docs.unity3d.com/ScriptReference/Networking.NetworkConnection.Send.html