Unity-Photon Pun2个人总结
生活随笔
收集整理的這篇文章主要介紹了
Unity-Photon Pun2个人总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
進入房間前的配置
1、使用設定好的Setting
private void Start(){PhotonNetwork.ConnectUsingSettings();}2、MonoBehaviour改為MonoBehaviourPunCallbacks
public class NetworkLauncher : MonoBehaviourPunCallbacks{}這樣我們才可以獲得Photon服務端的一些反饋資料
3、連接到Photon服務器
public override void OnConnectedToMaster(){base.OnConnectedToMaster(); //連接Photon服務器print("Welcome");PhotonNetwork.JoinLobby(default); //進入游戲大廳}4、加入或創建房間
public void JoinOrCreateButton() {RoomOptions options = new RoomOptions{MaxPlayers = 10 //最大玩家人數};PhotonNetwork.JoinOrCreateRoom("MyRoom", options, default);}5、加入或者創建房間后做場景跳轉
public override void OnJoinedRoom(){PhotonNetwork.LoadLevel(1);}完整代碼
using System.Collections; using System.Collections.Generic; using UnityEngine; using Photon.Pun; using Photon.Realtime; using UnityEngine.UI;public class NetworkLauncher : MonoBehaviourPunCallbacks {public GameObject loginUI;public GameObject nameUI;public InputField roomName;public InputField playerName;public GameObject roomListUI;private void Start(){PhotonNetwork.ConnectUsingSettings();}public override void OnConnectedToMaster(){base.OnConnectedToMaster();print("Welcome");nameUI.SetActive(true);PhotonNetwork.JoinLobby(default);}public void PlayButton() {nameUI.SetActive(false);//NickName玩家名字PhotonNetwork.NickName = playerName.text;loginUI.SetActive(true);if (PhotonNetwork.InLobby) {roomListUI.SetActive(true);}}public void JoinOrCreateButton() {if (roomName.text.Length < 2) return;loginUI.SetActive(false);RoomOptions options = new RoomOptions{MaxPlayers = 10};PhotonNetwork.JoinOrCreateRoom(roomName.text, options, default);}public override void OnJoinedRoom(){PhotonNetwork.LoadLevel(1);} }?輸入名字,進入游戲大廳
?進入大廳,設置房間名后進入房間,可創建房間或者加入房間
進入房間后的配置
1、實例化生成玩家對象
GameObject Player = PhotonNetwork.Instantiate("Player", Vector.one,Quaternion.identity, 0);?預制體需要放在PhotonUnityNetworking/Resources包中
?2、限定玩家操作,防止當前對象操作另一玩家對象
private void Update(){//如果操作的不是自己的玩家對象,則直接返回trueif (!photonView.IsMine && PhotonNetwork.IsConnected) return;}3、Photon數據同步和狀態同步
(1)需要同步的物體,要掛上PhotonView組件
?(2)Photon為我們提供了位置同步和Animator的同步,直接掛上去即可完成公布
?
?(3)自定義數據同步
i.需要繼承IpunObservable
ii.需要實現自定義接口
public class Test : MonoBehaviourPunCallbacks,IPunObservable {public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info){if (stream.IsWriting){stream.SendNext(IsthereAnyone);}else {IsthereAnyone = (bool)stream.ReceiveNext();}} }總結
以上是生活随笔為你收集整理的Unity-Photon Pun2个人总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CE游戏修改器制作游戏修改器教程
- 下一篇: 计算机网络 - UDP/TCP、IP、M