【发布时间】:2014-07-05 05:01:40
【问题描述】:
我正在开发一个 Unity Network 游戏,其中我有两个玩家,他们有一些基本动作。一个玩家由服务器控制,另一个玩家由客户端控制。
为此,我建立了一个客户端/服务器连接。建立连接后,我可以在屏幕两侧看到两个玩家。我用的是RPC方法。
现在,如果我在服务器上移动,我可以看到服务器玩家也在客户端移动。这意味着它们是同步的。但是当我在客户端移动时,只有客户端玩家移动。我看不到服务器端的移动。为什么这不起作用?
我已经用 UnityScript 编写了代码。
#pragma strict
var farword:boolean=false;
var backword:boolean=false;
var FirstPlayer:GameObject;
var SecondPlayer:GameObject;
var isFarword=false;
var isBackword=false;
function Update () {
if(isFarword)
{
networkView.RPC("ChangePos",RPCMode.All);
isFarword=false;
}
}
@RPC
function ChangePos()
{
if(isFarword)
{
if(Network.isServer)
{
FirstPlayer.transform.Translate(0,0,1);
isFarword=false;
}
if(Network.isClient)
{
SecondPlayer.transform.Translate(0,0,1);
isFarword=false;
}
}
else if(isBackword)
{
if(Network.isServer)
{
FirstPlayer.transform.Translate(0,0,-1);
isBackword=false;
}
if(Network.isClient)
{
SecondPlayer.transform.Translate(0,0,-1);
isBackword=false;
}
}
}
function OnGUI()
{
if(GUI.RepeatButton(new Rect(1000,100,80,70),"Farword"))
{
isFarword=true;
}
if(GUI.RepeatButton(new Rect(850,100,80,70),"second"))
{
isBackword=true;
}
}
【问题讨论】:
-
我不认为这段代码是出错的部分。
-
你在哪里创建角色?你使用实例化吗?或者只是在编辑器中拖放。如果实例化使用 networkinstantiate 而不是普通的实例化。示例用法(在 c# 中,但不难翻译)pastebin.com/3kVAygHs
标签: network-programming unity3d unityscript