0

別の場所でプレーヤーをスポーンする場合を除いて、このネットワーク スクリプトは非常にうまく機能します。現在接続しているプレイヤーの数に基づいて位置を決定します。現在、変数はサーバー上で正しく更新されているため、問題はありません。しかし、クライアントがゲームに参加すると、そのクライアントのプレーヤー数は 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;
    }
4

1 に答える 1

1

NetworkView + OnSerializeNetworkView でグローバルな非表示オブジェクトを作成する

それはあなたが望むものですか?

于 2013-01-30T03:36:45.463 に答える