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