如何使用光子网络仅同步一次位置
How to sync position only one time, using Photon Networking
我要执行以下操作。
当玩家加入房间时,他应该收到所有游戏对象(带有光子视图)的位置。
当玩家进入房间时,这应该只发生一次。
如何实施?
只发送一条信息的最佳解决方案是使用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
}
}
有道理吗?
我要执行以下操作。
当玩家加入房间时,他应该收到所有游戏对象(带有光子视图)的位置。
当玩家进入房间时,这应该只发生一次。
如何实施?
只发送一条信息的最佳解决方案是使用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
}
}
有道理吗?