欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Unity-Photon Pun2个人总结

发布时间:2023/12/18 编程问答 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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个人总结的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。