【问题标题】:RPC to send variable from server to client on client joing game UnityRPC 在客户端加入游戏 Unity 时将变量从服务器发送到客户端
【发布时间】:2013-01-12 00:58:13
【问题描述】:

我的这个网络脚本运行良好,除非我想在不同的位置生成玩家。我根据当前连接的玩家数量确定位置。现在,变量正在服务器上更新,所以很好。但是当客户端加入游戏时,他的玩家数为 0。我想将其设置为从服务器变量连接的当前玩家数。我在搞乱 RPC 函数,但没有运气。

这就是我目前所拥有的。

    var playerCount : int = 0;

    //player and jump master spawn componets
    var playerPrefab : GameObject;
    //spawn points
   var sp1: Transform;
    var sp2: Transform;
   var sp3: Transform;
   var sp4: Transform;

   var sp : Transform;


   function OnServerInitialized()
   {
 Debug.Log("Server initilized");
 playerCount++;
 spawnPlayer(sp1);

   }
   function OnPlayerConnected(networkPlayer:NetworkPlayer):void
   {
     Debug.Log (networkPlayer.guid + " connected");
     playerCount++;

     //spawnPlayer(sp2);
    //spawning player here does not work! Just a black screen no cam perhaps
   }

   function OnConnectedToServer()
   {
  //loop though every object in the game
    for(var go : GameObject in FindObjectsOfType(GameObject))
    {
        go.SendMessage("OnNetworkLoadedLevel", SendMessageOptions.DontRequireReceiver);
    }
    Debug.Log("Connected to server");
    Debug.Log("Player Count: " + playerCount);
    if(playerCount ==0)
    {
        sp = sp1;

    }
    if(playerCount ==1)
    {
        sp = sp2;

    }
    if(playerCount ==2)
    {
        sp = sp3;

    }
    if(playerCount ==4)
    {
        sp = sp4;

    }
    spawnPlayer(sp);

      }


    //spawn player prefab
    function spawnPlayer(SP : Transform)
    {
  Network.Instantiate(playerPrefab, SP.position, Quaternion.identity, 0);
}

    @RPC
   function SendPlayerCount(player : NetworkPlayer )
   {
  //send playercount to client from server
  networkView.RPC("assignvariableRPC",player,playerCount);
   }
    @RPC
    function RecivePlayerCount(count : int)
   {
//get playercount from server
//playerCount = playerCount;
playerCount = count;
    }

【问题讨论】:

    标签: networking unity3d rpc spawning


    【解决方案1】:

    使用 NetworkView + OnSerializeNetworkView 制作一个全局不可见对象

    这就是你想要的吗?

    【讨论】:

    • 很抱歉迟到的回复在工作中被重新分配。所以你的说法只是公开然后它应该发送?我认为我必须进行 RPC 调用或其他操作才能将变量更新给所有人
    • 你需要一个带有NetworkView的静态GameObject,所以每个玩家都有这个GameObject,所以你可以通过这个GameObject调用RPC~
    • 尝试 OnSerializeNetworkView。如果您只需要同步 playerCount 变量,这就是您想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多