当前位置: 首页 > news >正文

什么网站可以做教师资格证的题/湖南有实力seo优化

什么网站可以做教师资格证的题,湖南有实力seo优化,青岛胶南做网站的有多少,中英双语营销型网站一、简介 Mirror 是一个用于 Unity 的开源多人游戏网络框架,它提供了一套简单高效的网络同步机制,特别适用于中小型多人游戏的开发。以下是 Mirror 插件的一些关键特点和组件介绍: 简单高效:Mirror 以其简洁的 API 和高效的网络…

一、简介

Mirror 是一个用于 Unity 的开源多人游戏网络框架,它提供了一套简单高效的网络同步机制,特别适用于中小型多人游戏的开发。以下是 Mirror 插件的一些关键特点和组件介绍:

  1. 简单高效:Mirror 以其简洁的 API 和高效的网络代码而受到开发者的欢迎。
  2. 基于 UnityEngine 生命周期:Mirror 利用 Unity 的生命周期回调进行数值同步,简化了网络开发流程。
  3. RPC 调用:Mirror 提供了三种远程过程调用(RPC)的方式:[Command]、[ClientRpc] 和[TargetRpc],允许开发者在不同客户端或服务器上执行特定的函数。
  4. 网络组件
  • NetworkManager:用于管理网络会话,包括开始服务器、客户端和处理玩家连接。
  • NetworkIdentity:为游戏对象添加网络身份,使其能够在网络上被识别和同步。
  • NetworkStartPosition:用于设置玩家的初始生成位置。 网络发现:Mirror
  1. 支持局域网内的网络发现功能,方便玩家发现并加入游戏。

  2. 运输层兼容性:Mirror 兼容多种低级运输层,包括但不限于 TCP、UDP 和 KCP 协议。

  3. 开箱即用:Mirror 在 Unity Asset Store 中免费提供,并且具有丰富的文档和社区支持。

  4. 适用于小体量游戏:Mirror 更适合小型到中型的游戏项目,对于大型游戏项目可能需要更复杂的网络解决方案。

Mirror官网方文档:https://mirror-networking.gitbook.io/docs。

二、 使用示例

2.1 效果预览

实现简单多人联机小游戏
在这里插入图片描述

2.2 步骤1 添加网络管理

新建一个空对象,并为其添加Network Manager、Kcp Transport、Network Manager HUD组件。
在这里插入图片描述
其中:在Network Manager中添加在线场景和离线场景以及玩家预制体,玩家预制体可以从网上寻找模型或者使用内置模型代替,注意玩家预制体要添加 Network Identity组件。
最大玩家设为4对应4个玩家生成点,玩家生成方法可以设为随机或轮循。
在这里插入图片描述
在Kcp Transport中的配置可以不用动,也可以根据需要配置。
在这里插入图片描述

2.3 环境设置

  • 地形可以简单用一个Plane来代替,如果对质量要求高可以后期替换为别的素材,添加天气系统,使用HDRP等可以看往期内容。
  • 为玩家添加生成位置,这里放置四个位置生成玩家,前面已经设置了最大玩家数为4,则可以有四个不同玩家进入游戏,并在预设位置生成。可以先设置好一个,在复制加下来几个并设置好想要生成的位置。使用一个空对象添加Network Start Position即可。

在这里插入图片描述

2.3 代码部分

为玩家添加代码来操作玩家移动

playerScript参考代码

using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Numerics;
using Mirror;
using UnityEngine;
using static System.Runtime.CompilerServices.RuntimeHelpers;
using Color = UnityEngine.Color;
using Random = UnityEngine.Random;
using Vector3 = UnityEngine.Vector3;public class PlayerScrpt : NetworkBehaviour
{public GameObject floatingInfo;public TextMesh nameText;//武器public GameObject[] weaponArray;private int currentWeapon;private Weapon activeWeapon;private float coolDownTime;private Material playMaterialClone;//private UIScript UI;[SyncVar(hook = nameof(OnPlayerNameChanged))]private string playerName;[SyncVar(hook = nameof(OnPlayerColorChanged))]private Color playerColor;[SyncVar(hook = nameof(OnWeaponChanged))]private int currentWeaponSynced;//name改变触发private void OnPlayerNameChanged(string oldName, string newName){nameText.text = newName;}//颜色改变触发private void OnPlayerColorChanged(Color oldColor, Color newColor){//同步名称颜色nameText.color = newColor;//同步材质颜色playMaterialClone = new Material(GetComponent<Renderer>().material);playMaterialClone.SetColor("_Color", newColor);}//切换武器private void OnWeaponChanged(int oldIndex, int newIndex){//判断旧武器是否存在,若存在则隐藏if (0 < oldIndex && oldIndex < weaponArray.Length && weaponArray[oldIndex] != null){weaponArray[oldIndex].SetActive(false);}if (0 < newIndex && newIndex < weaponArray.Length && weaponArray[newIndex] != null){weaponArray[newIndex].SetActive(true);activeWeapon = weaponArray[newIndex].GetComponent<Weapon>();//显示当前武器子弹数量//UI.canvasBulletText.text = activeWeapon.bulletCount.ToString();}else{activeWeapon = null; //若武器不存在,则激活武器为空//UI.canvasBulletText.text = "No Weapon";}}[Command]public void CmdSetupPlayer(string newName, Color colorValue){playerName = newName;playerColor = colorValue;}[Command]public void CmdActiveWeapon(int index){currentWeaponSynced = index;}[Command]public void CmdFire(){/*if (activeWeapon == null)return;*/RpcFire();}[ClientRpc]public void RpcFire(){var bullet = Instantiate(activeWeapon.bullet, activeWeapon.firePos.position, activeWeapon.firePos.rotation);bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * activeWeapon.bulletSpeed;Destroy(bullet, activeWeapon.bulletLifetime);}private void Awake(){foreach (var weapon in weaponArray){if (weapon != null){weapon.SetActive(false);}}}public override void OnStartLocalPlayer(){//摄像机与Player绑定Camera.main.transform.SetParent(transform);Camera.main.transform.localPosition = Vector3.zero;floatingInfo.transform.localPosition = new Vector3(0f, -2.7f, 6f);floatingInfo.transform.localScale = new Vector3(1f, 1f, 1f);changePlayerNameAndColor();}// Update is called once per framevoid Update(){if (!isLocalPlayer){floatingInfo.transform.LookAt(Camera.main.transform);return;}var moveX = Input.GetAxis("Horizontal") * Time.deltaTime * 110f;var moveZ = Input.GetAxis("Vertical") * Time.deltaTime * 4.0f;transform.Rotate(0, moveX, 0);transform.Translate(0, 0, moveZ);if (Input.GetKeyDown(KeyCode.C))  //按下c改变颜色{changePlayerNameAndColor();}if (Input.GetButtonDown("Fire2")){currentWeapon += 1;if (currentWeapon > weaponArray.Length)currentWeapon = 1;CmdActiveWeapon(currentWeapon);}if (Input.GetButtonDown("Fire1")){if (activeWeapon != null && Time.time > coolDownTime && activeWeapon.bulletCount > 0){coolDownTime = Time.time + activeWeapon.coolDown;//更新子弹数量activeWeapon.bulletCount--;//UI.canvasBulletText.text = activeWeapon.bulletCount.ToString();CmdFire();}}}//改变玩家名称和颜色private void changePlayerNameAndColor(){var tempName = $"Player {Random.Range(1, 999)}";var tempColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f));CmdSetupPlayer(tempName, tempColor);}
}

Weapon参考代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Weapon : MonoBehaviour
{public Transform firePos; //子弹位置public GameObject bullet; // 子弹对象public float bulletSpeed = 5f; //子弹速度public float bulletLifetime = 3f;//子弹生命周期public int bulletCount = 15; //子弹数量public float coolDown = 0.5f;}

三、项目生成

接下来就可以点击文件->构建和运行,把游戏文件发给小伙伴一起玩耍。
在这里插入图片描述
将localhost改成自己当前ip,即可让小伙伴加入房间远程游玩了。如果链接失败,记得关闭防火墙!

相关文章:

【unity笔记】七、Mirror插件使用

一、简介 Mirror 是一个用于 Unity 的开源多人游戏网络框架&#xff0c;它提供了一套简单高效的网络同步机制&#xff0c;特别适用于中小型多人游戏的开发。以下是 Mirror 插件的一些关键特点和组件介绍&#xff1a; 简单高效&#xff1a;Mirror 以其简洁的 API 和高效的网络…...

掌握SEO:如何优化用ChatGPT生成的文章以提升搜索排名

在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为网站流量的重要来源。随着人工智能技术的进步&#xff0c;越来越多的人开始使用ChatGPT等AI工具来生成文章。然而&#xff0c;虽然这些工具可以快速生成内容&#xff0c;但要确保这些内容在搜索引擎中…...

Java面试问题(一)

一.Java语言具有的哪些特点 1.Java是纯面向对象语言&#xff0c;能够直接反应现实生活中的对象 2.具有平台无关性&#xff0c;利用Java虚拟机运行字节码文件&#xff0c;无论是在window、Linux还是macOS等其他平台对Java程序进行编译&#xff0c;编译后的程序可在其他平台上运行…...

Firewalld防火墙基础

Firewalld 支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具 支持IPv4、IPv6防火墙设置以及以太网桥 支持服务或应用程序直接添加防火墙规则接口 拥有两种配置模式 运行时配置&#xff1a;临时生效&#xff0c;一旦重启或者重载即不生效 永久配置&#xff1a…...

解决Java中多线程同步问题的方案

解决Java中多线程同步问题的方案 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java开发中&#xff0c;多线程同步问题是我们经常面对的挑战之一。正确处理…...

每日一练 - RSTP与STP收敛速度对比

01 真题题目 RSTP 收敛速度比 STP 要快,以下说法正确的是&#xff1f; A. 在 RSTP 中检测拓扑是发生变化只有一个标准.一个非边缘端口迁移到 Forwarding 状态 B. 在 STP 中,为了避免临时环路,至少要等待一个 Forwarding Delay 待全网端口确定,所有端口才能进行转发 C. P/A …...

ZS-20H型水泥胶砂振实台

一、 概述 水泥胶砂振实台是为我国水泥胶砂强度检验方法等同采ISO679国际标准而设计。该仪器符合 JC/T 682《水泥胶砂试体成型振实台》要求&#xff0c;适用于水泥强度检验所用试样的制备。 二、 技术数据 1、台盘&#xff08;包括臂杆、压模框等&#xff09;的总质量 13.75 …...

力扣377 组合总和Ⅳ Java版本

文章目录 题目描述代码 题目描述 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], targe…...

昇思25天学习打卡营第3天 | 数据集 Dataset

数据是深度学习的基础&#xff0c;高质量的数据输入将在整个深度神经网络中起到积极作用。MindSpore提供基于Pipeline的数据引擎&#xff0c;通过数据集&#xff08;Dataset&#xff09;和数据变换&#xff08;Transforms&#xff09;实现高效的数据预处理。其中Dataset是Pipel…...

交换机三层架构及对流量的转发机制

交换机的作用&#xff1a; 区别集线器(HUB)&#xff1b; HUB 为物理层设备&#xff0c;只能直接转发电流 交换机为数据链路层设备&#xff0c;可以将电流与二进制转换&#xff0c;实现了以下功能&#xff1a; 无限的传输距离 彻底解决了冲突-所有的接口可以同时收发数据 二…...

开发者配置项、开发者选项自定义

devOptions.vue源码 <!-- 开发者选项 &#xff08;CtrlAltShiftD&#xff09;--> <template><div :class"$options.name" v-if"visible"><el-dialog:custom-class"sg-el-dialog":append-to-body"true":close-on…...

【Java】解决Java报错:IndexOutOfBoundsException in Collections

文章目录 引言一、IndexOutOfBoundsException的定义与概述1. 什么是IndexOutOfBoundsException&#xff1f;2. IndexOutOfBoundsException的常见触发场景3. 示例代码 二、解决方案1. 检查索引范围2. 使用增强型for循环3. 使用ListIterator进行遍历4. 使用线程安全的集合 三、最…...

C++编程(三)面向对象

文章目录 一、概念二、类的定义&#xff08;一&#xff09;声明一个类类型的语法格式&#xff1a;&#xff08;二&#xff09;类中的访问控制权限&#xff08;三&#xff09;实例化对象1. 栈区对象2. 堆区对象 &#xff08;四&#xff09;类内声明类外实现&#xff08;五&#…...

Batch入门教程

Batch学习在多个领域有不同的应用&#xff0c;但最常见的是在机器学习和教育学习领域。以下是一个关于Batch学习入门的清晰指南&#xff0c;将分别介绍这两个领域中的Batch学习概念、方法和一些实用信息。 1. 机器学习中的Batch学习 定义与概念 Batch_Size&#xff1a;在机器…...

49-2 内网渗透 - 使用UACME Bypass UAC

靶场准备: 1. 使用已有的 Windows 2012 虚拟机 确保你的虚拟机正在运行,并且可以正常访问。2. 添加 test 用户到管理员组(如上篇文件添加过了就跳过这一步) 具体命令如下: net localgroup administrators test /add 3. 切换用户登录 注销当前会话,并使用 test 用户登录。…...

Django 表单使用示例:数据格式校验

在本文中,我们将使用 Django 的表单(Forms)功能来创建一个添加角色的页面,并对用户提交的数据进行格式校验。 创建 Django 项目和应用 首先,我们创建一个名为 ​​form_demo​​​ 的 Django 项目和一个名为 ​​app01​​ 的应用: django-admin startproject form_de…...

OkHttp框架源码深度剖析【Android热门框架分析第一弹】

OkHttp介绍 OkHttp是当下Android使用最频繁的网络请求框架&#xff0c;由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp&#xff0c;同时现在流行的Retrofit框架底层同样是使用OKHttp的。 源码传送门 优点: 支持Http1、Http…...

【MySQL】数据库——备份与恢复,日志管理1

一、数据备份的重要性 1.备份的主要目的是灾难恢复 在生产环境中&#xff0c;数据的安全性至关重要 任何数据的丢失都可能产生严重的后果造成数据丢失的原因&#xff1a; 程序错误人为,操作错误运算错误磁盘故障灾难&#xff08;如火灾、地震&#xff09;和盗窃 2.数据库备份…...

什么样的企业适合SD-WAN网络专线?

SD-WAN&#xff08;Software-Defined Wide Area Network&#xff0c;软件定义广域网&#xff09;是一种网络技术&#xff0c;它利用软件定义的方式管理和控制广域网&#xff08;WAN&#xff09;&#xff0c;旨在提高网络效率、降低成本并简化网络管理。以下是适合采用SD-WAN网络…...

已解决java.security.GeneralSecurityException: 安全性相关的通用异常的正确解决方法,亲测有效!!!

已解决java.security.GeneralSecurityException: 安全性相关的通用异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 解决思路 解决方法 确定具体异常类型 检查输入参数 验证算法支持性 调整安全策略 确保资源可…...

秋招Java后端开发冲刺——非关系型数据库篇(Redis)

一、非关系型数据库 1. 主要针对的是键值、文档以及图形类型数据存储。 2. 特点&#xff1a; 特点说明灵活的数据模型支持多种数据模型&#xff08;文档、键值、列族、图&#xff09;&#xff0c;无需预定义固定的表结构&#xff0c;能够处理各种类型的数据。高扩展性设计为水…...

个人对JVM的一点理解

JVM&#xff08;Java 虚拟机&#xff09;是 Java 程序能够跨平台运行的关键。它负责将 Java 字节码转换为机器码并执行。 JVM 主要由类加载器、运行时数据区、执行引擎和本地方法接口等部分组成。运行时数据区包括方法区、堆、虚拟机栈、本地方法栈和程序计数器等。 GC&#xf…...

Flutter【组件】可折叠文本组件

简介 flutter 可折叠文本组件。 点击展开&#xff0c;收起折叠文本。支持样式自定义 github地址&#xff1a; github.com/ThinkerJack… pub地址&#xff1a;https://pub.dev/packages/jac_uikit 展开收起文本 使用方式&#xff1a; ExpandableText(content: 测试 * 50,ma…...

内容安全复习 7 - 对抗攻击与防御

文章目录 概述攻击对抗性攻击的目的攻击的损失函数如何攻击FGSM黑盒与白盒真实世界的攻击 防御被动防御主动防御 概述 动机 &#xff08;1&#xff09;不仅要在实验室中部署机器学习分类器&#xff0c;也要在现实世界中部署&#xff1b;实际应用 &#xff08;2&#xff09;分类…...

淘宝店铺商家订单API-接入ERP,多平台订单同步的利器

淘宝开放平台给商家们提供了丰富的API&#xff0c;以方便大家扩展业务流程。但是需要调用这些API&#xff0c;商家们要提交资质审核&#xff0c;审核条件也是很严格的。第三方数据公司的存在可以为大家解决这个问题。 custom-自定义API操作 请求参数 请求参数&#xff1a;ap…...

【微前端-Single-SPA、qiankun的基本原理和使用】

背景 在实际项目中&#xff0c;随着日常跌倒导致的必然墒增&#xff0c;项目会越来越冗余不好维护&#xff0c;而且有时候一个项目会使用的其他团队的功能&#xff0c;这种跨团队不好维护和管理等等问题&#xff0c;所以基于解决这些问题&#xff0c;出现了微前端的解决方案。…...

多元化功能空间,打造影像产业生态圈

国际数字影像产业园的多元化功能空间定位涵盖了从产业实训、研发创新、资产交易、集群发展到孵化服务、大数据支持、产学研合作以及人力资源服务等多个方面&#xff0c;旨在为数字影像产业提供全方位的支持和服务&#xff0c;推动产业的升级和发展。 1、产业实训空间&#xff1…...

华为鸿蒙正式杀入工业自动化,反攻开始了!

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在近日举行的2024华为开发者大会上&#xff0c;华龙讯达与华为共同发布了基于鸿蒙内核技术的“HualongOS 华龙工业操作系统”&#xff0c;这一里…...

学历优先还是专业优先?高考志愿填报的抉择

学历优先还是专业优先&#xff1f;高考志愿填报的抉择 2024年高考帷幕落下&#xff0c;新一轮的思考与选择悄然来临。对于每一位高考考生&#xff0c;选择学校和专业是开启大学新生活的两个前置必选项。然而&#xff0c;有时候“鱼与熊掌不可兼得”&#xff0c;在分数受限的情…...

SpringAOP常用功能实现

1. 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2. 核心通知 package com.example.aspect;import lombok.SneakyThrows; import org.aspectj.l…...