如何使用Photon Networking

时间:2016-08-09 22:49:30

标签: unity3d photon

我想做以下事 当玩家加入房间时,他应该收到所有游戏对象' (带光子视图)位置。
当玩家进入房间时,这应该只发生一次。 怎么可以实现呢?

1 个答案:

答案 0 :(得分:1)

仅发送一条信息的最佳解决方案是使用RPC消息系统。

[PunRPC]
void changePos(int x, int y, int z)
{
    Debug.Log("new pos =" + x + "," + y + ","+z);
}

PhotonView photonView = PhotonView.Get(this);
photonView.RPC("changePos", PhotonTargets.All, 1,1,1 );

您可以在此处阅读有关RPC消息的更多信息:https://doc.photonengine.com/en/pun/current/tutorials/rpcsandraiseevent

编辑:

我猜你正在通过:

        PhotonNetwork.JoinRoom(this.roomName);

因此,在可以使用的地方负责连接服务器:

public void OnCreatedRoom()
{
    Debug.Log("OnCreatedRoom");
}

public void OnJoinedRoom()
{
    Debug.Log("OnJoinedRoom");
    RPCserver.Instance.AddNewPlayer(login)      
}

然后,您可以使用桥来存储所有启用RPC的方法:

public class RPCserver : Singleton
{
    public List<Player> players = new List<Player>();

    public void addNewPlayer(string name)
    {
            Player p = new Player(name);
            players.Add(p);

            if( p.isNewPlayer() ) fetchOtherObjectsPositions();
    }

    private void fetchOtherObjectsPositions(){
        // Go through all neccesery objects, and send their position via RPCserver
    }
}

这有意义吗?