iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0

事件處理

在Photon Fusion 中有許多事件諸如

  • 玩家加入
  • 收集輸入
  • 新增連線
  • 場景加載

在Fusion中提供INetworkRunnerCallbacks,來對這些事件做相關處理

public class CallBacksProvider : MonoBehaviour, INetworkRunnerCallbacks
{
    
    public void OnEnable(){
        var myNetworkRunner = FindObjectOfType<NetworkRunner>();
        myNetworkRunner.AddCallbacks( this ); //向NetworkRunner註冊輸入
    }
    
    public void OnDisable(){
        var myNetworkRunner = FindObjectOfType<NetworkRunner>();
        myNetworkRunner.RemoveCallbacks( this ); ////向NetworkRunner移除輸入
    }    

    //玩家加入時觸發
    public void OnPlayerJoined(NetworkRunner runner, PlayerRef player)
    {
        //相關處理
    }
    
    // 輪詢輸入
    public void OnInput(NetworkRunner runner, NetworkInput input)
    {
        // 相關處理
    }
    
    // 更新連線,僅有SessionLobby可用
    public void OnSessionListUpdated(NetworkRunner runner, List<SessionInfo> sessionList)
    {
        // 相關處理
    }
    
    // 其他事件
    // ......
}

要使用INetworkRunnerCallbacks請務必註冊輸入,儘管當INetworkRunnerCallbacks掛在與NetworkRunner相同物件時會自動註冊輸入,避免產生不必要的誤判。

玩家輸入


// 設定NetworkButtons列舉,重要提示: 必須明確定義它並從0開始
public enum NetworkInputState
{
    SpawnBuilding = 0,
    SpawnAnimal = 1
}

// 輸入結構
public struct NetworkInputData : INetworkInput
{
    public NetworkId selectObjectId; 
    public NetworkButtons states; 
    public Vector3 selectDirection; 
    public NetworkPrefabRef spawnPrefab;

}

public NetworkInputData inputData = new NetworkInputData();

public void OnInput(NetworkRunner runner, NetworkInput input)
{
    buttons.states.Set(NetworkInputState.SpawnBuilding, true); // 設置按鈕
    
    input.Set(inputData); // 設定輸入
    inputData = default; // 重置輸入
}

在Fusion中使用INetworkRunnerCallbacks.OnInput取代原生的輸入,來控制聯網物件,NetworkInput所設定的input需要設定輸入結構,輸入結構必須繼承INetworkInput,倘諾需要透過UI或其他方式控制,還有NetworkButtons能夠使用,只須設定相應需求的列舉即可,要注意INetworkInput能新增的資料型態有些許限制。

引用來源

https://doc.photonengine.com/zh-tw/fusion/current/manual/data-transfer/player-input


上一篇
Day 5 Photon Fusion Host Mode 建立連線,Link Start !!!!
下一篇
Day 7 Photon Fusion 2 Host Mode物件生成
系列文
使用unity 及 photon fusion 打造線上RTS遊戲13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言