Unity-Photon Pun2个人总结

news2025/1/11 21:50:39

进入房间前的配置

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()
    {
        //如果操作的不是自己的玩家对象,则直接返回true
        if (!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();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/76413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高考题改成IB试题,会是什么样子?

从2019年浙江高考语文卷的一篇现代文阅读说起的&#xff0c;振语看过了这道题和推文作者的解读后&#xff0c;一时兴起&#xff0c;就想着能不能把它改成一道IB考题&#xff0c;顺带着也把这篇选文细读评点了一番。&#xff08;一&#xff09;高考试题再现&#xff1a; 这道高考…

百趣代谢组学分享:HSFB2b通过促进类黄酮生物合成赋予大豆耐盐能力

​我国大豆的产量远远不能满足国内需求&#xff0c;提高大豆的耐逆性可以充分利用边际土地增加大豆种植面积从而提高大豆产量。百趣代谢组学分享&#xff0c;热激转录因子基因在植物生长过程中发挥了重要作用&#xff0c;然而在大豆耐盐反应中热激转录因子的功能及机理仍不清楚…

A-Level商务例题解析及练习Cash flow forecasting

今日知识点&#xff1a; Cash flow forecasting Cash inflows Cash outflows Limitations of cash flow forecasting例题 Q: Discuss the view that cash flow forecasts for a newly operating international airport may be of limited use to its senior managers. 解析 Ans…

Mysql 进阶(面向面试篇)事务篇

1、事务 1.1 事务简介 事务 是一组操作的集合&#xff0c;它是不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。保证原子性 就比如: 张三给李四转账1000块钱&#x…

仿英雄联盟网页HTML代码 学生网页设计与制作期末作业下载 大学生网页设计与制作成品下载 DW游戏介绍网页作业代码下载

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

推荐系统CTR方向相关论文一句话总结

Fearure Interaction // CTR纯FM模型及其演变Factorization Machines. 2010Field-aware Factorization Machines for CTR Prediction. 2016Neural Factorization Machines for Sparse Predictive Analytics. 2017Attentional Factorization Machines: Learning the Weight of F…

StringBuffer类

StringBuffer基本介绍 StringBuff代表可变的字符串&#xff0c;可以对字符串内容进行增删很多方法与String相同&#xff0c;但StringBuff是可变长度的StringBuff是一个容器 了解StringBuffer StringBuffer的继承关系&#xff1a; 可以看到StringBuffer继承AbstractStringBu…

【计网实验】思科CiscoPacketTracer仿真实验

本文参考B站up主&#xff1a;湖科大教书匠 软件版本&#xff1a;Cisco Packet Tracer 6.1.1sv ❓ 实验01的内容较为简单&#xff0c;所以不写了~ &#x1f339; 因作者水平有限&#xff0c;若有遗漏、错误等地方&#xff0c;请大佬批评指正 实验02&#xff1a;访问Web服务器 实…

设计必备,5个png免抠素材网站,建议收藏

做设计、PPT都需要用到大量的免抠素材&#xff0c;职场中熟练使用Photoshop的人毕竟是少数&#xff0c;也很少有人愿意花费时间去精细抠图。那这5个免抠素材网站一定要收藏好&#xff0c;可以有效帮你节省时间&#xff0c;提高工作效率。1、菜鸟图库 https://www.sucai999.com/…

计算机毕业设计php+vue基于微信小程序的员工宿舍报修系统

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,员工宿舍报修系统就是信息时代变革中的产物之一。 任何系统都要遵循系…

进程被杀Task被移除

现象 Kill查杀 Task被移除 当Task处于前台&Task中唯一的activity不处于onStop&#xff08;可能处于onResume/onPause等&#xff09;状态时&#xff0c;当前进程被kill查杀&#xff0c;当前activity会被finish导致task中因无activity而被移除。 12-08 15:20:54.991 18018…

Windows11去掉桌面快捷方式箭头

有部分强迫症用户&#xff0c;看到桌面每个图标都有一个小箭头&#xff0c;只想去掉看着舒服一点 但是Win10的大部分脚本都不能使用了&#xff0c;而且有可能导致桌面图标显示异常&#xff0c;不建议大家再去用脚本尝试(Win11也有脚本&#xff0c;但是随便更新版本&#xff0c…

深入理解Kafka Producer内部机制

总的来说&#xff0c;Kafka Producer是将数据发送到kafka集群的客户端。其组成部分如下图所示&#xff1a; 基本组件&#xff1a; Producer Metadata——管理生产者所需的元数据&#xff1a;集群中的主题和分区、充当分区领导者的代理节点等。Partitioner——计算给定记录的分…

Pygame入门-游戏代码结构及背景轮播、声音音效及图像动态效果

一、游戏代码结构 代码结构是代码的组织方式&#xff0c;也是游戏编程的思考框架。pygame官方文档中给出了以下建议&#xff0c;将游戏代码结构分为以下六个部分。 1导入游戏模块。 2资源处理类;定义一些类来处理最基本的资源&#xff0c;包括加载图像和声音&#xff0c;连接和…

C#(csharp)这门语言的优势在哪?

确实有不少人因为unity入坑C#&#xff0c;unity刚开始使用的语言也有很多&#xff0c;比如Unity&#xff08;一种Java的扩展&#xff09;或者Boo&#xff08;一种受Python启发的语言&#xff09;&#xff0c;但C#坚持至今甚至成为unity使用主流&#xff0c;C#当然有它的优点。 …

实测 ChatGPT 编程效果被其发现,这波我先站队 Stack Overflow

本文对 ChatGPT 解答编程问题的情况进行了测试。测试了不同难度的问题&#xff0c;并对 ChatGPT 的回答结果进行了鉴别。测试结果表明&#xff0c;ChatGPT 在解答简单的编程问题时表现较为出色&#xff0c;但在解决复杂的问题时则不太理想。因此&#xff0c;也总结出了如何更好…

Vulnhub靶机:SICKOS_ 1.1

目录介绍信息收集主机信息探测主机信息探测网站探测Getshell敏感信息收集SUDO提权第2种通关思路nikto扫描站点验证破壳漏洞破壳漏洞利用计划任务提权修复文件内容错乱 & 提权总结介绍 系列&#xff1a;SickOs&#xff08;此系列共2台&#xff09; 发布日期&#xff1a;201…

springboot+netty实现站内消息通知(完整代码)

代码用到的组件介绍 ChannelInitializer 见名知意&#xff0c;就是channel 初始化器&#xff0c;当每个客户端创建连接时这里面的代码都会执行一遍。由于&#xff0c;连接建立之后&#xff0c;这个channel就会常驻内存&#xff0c;所以这里就有个值得思考的问题&#xff1a; …

【vue核心】1.vue简介

1. 官网 英文官网: https://vuejs.org/ 中文官网: https://cn.vuejs.org/ 2. 介绍与描述 动态构建用户界面的渐进式 JavaScript 框架 作者: 尤雨溪 3. Vue 的特点 遵循 MVVM 模式 编码简洁, 体积小, 运行效率高, 适合移动/PC 端开发 它本身只关注UI, 也可以引入其它第三…

新冠疫苗预约小程序设计与实现的源码+文档

摘 要 网络的广泛应用给生活带来了十分的便利。所以把新冠疫苗预约管理与现在网络相结合&#xff0c;利用java技术建设新冠疫苗预约小程序&#xff0c;实现新冠疫苗预约的信息化。则对于进一步提高新冠疫苗预约管理发展&#xff0c;丰富新冠疫苗预约管理经验能起到不少的促进…