public void SpawnObject(NetworkPrefabRef prefab, Vector3 position, PlayerRef playerRef = null){
// 物件生成函式,四個參數分別是網路預製件,位置,旋轉,輸入授權
var obj = Runner.Spawn(prefab, position, Quaternion.identity, playerRef);
}
在Photon Fusion 2中想要生成網路物件,可以透過Runner.Spawn這個函式生成,但在Host mode時僅有主機端擁有狀態授權能夠生成物件,故需要透過RPC的方式來生成物件。
[Rpc(RpcSources.InputAuthority, RpcTargets.StateAuthority, HostMode = RpcHostMode.SourceIsHostPlayer)]
public void RPC_SendSpawnObject(NetworkPrefabRef prefab, Vector3 position, RpcInfo info = default)
{
RPC_RelaySpawn(prefab, position, info.Source);
}
[Rpc(RpcSources.StateAuthority, RpcTargets.All, HostMode = RpcHostMode.SourceIsServer)]
public void RPC_RelaySpawn(NetworkPrefabRef prefab, Vector3 position, PlayerRef playerRef)
{
SpawnObject(prefab, position, playerRef)
}
RPC是"Remote Procedure Call"的縮寫,中文通常翻譯為"遠程過程調用"。在網絡遊戲中,RPC允許你在一台電腦上執行代碼,但實際上這段代碼會在網絡中的其他電腦上運行。
想像你和朋友在玩一個網絡遊戲。當你按下按鈕開門時,你希望其他玩家也能看到門開了。RPC就是實現這種效果的方法之一。