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

【unity游戏开发之InputSystem——06】PlayerInputManager组件实现本地多屏的游戏(基于unity6开发介绍)

文章目录

  • PlayerInputManager 简介
    • 1、PlayerInputManager 的作用
    • 2、主要功能
  • 一、PlayerInputManager组件参数
    • 1、Notification Behavior 通知行为
    • 2、Join Behavior:玩家加入的行为
    • 3、Player Prefab 玩家预制件
    • 4、Joining Enabled By Default 默认启用加入
    • 5、Limit Number Of Players:限制加入游戏的玩家数量
    • 6、Enable Split_Screen 启用分屏
  • 二、PlayerInputManager使用实例
    • 1、创建玩家预制体
    • 2、给玩家添加PlayerInput组件
    • 3、玩家添加控制脚本
    • 4、PlayerInputManager组件配置
    • 5、结果不同设备控制自己创建出来的玩家
    • 6、分屏
    • 7、PlayerInputManager通知行为脚本
  • 专栏推荐
  • 完结

PlayerInputManager 简介

1、PlayerInputManager 的作用

PlayerInputManager 是 Unity 新输入系统 (InputSystem) 中的一个关键组件,专门用于管理本地多人游戏的输入。它简化了多玩家输入处理的过程,特别是在分屏游戏和多手柄游戏中,确保每个玩家的输入能够被正确识别和分配。

如果你想做本地多屏的游戏,比如目前非常火爆的《双人成行》,那么你就很有必要学习一下PlayerInputManager的知识。
在这里插入图片描述

2、主要功能

  1. 玩家加入与离开管理

    • PlayerInputManager 自动检测新玩家的加入(例如,当有新的控制器连接时)并为他们创建相应的 PlayerInput 实例。
    • 它也处理玩家的离开逻辑,如断开控制器或退出游戏时清理资源。
  2. 动态玩家分配

    • 支持根据可用的输入设备动态分配玩家编号。例如,在分屏游戏中,随着更多玩家加入,屏幕会自动分割成多个视图,每个视图对应一个玩家。
    • 对于双手柄游戏,可以根据连接顺序自动将不同的手柄指派给不同的玩家。
  3. 输入配置文件管理

    • 可以为每个玩家关联不同的输入配置文件(.inputactions 文件),以便支持多样化的控制方案。
    • 允许在运行时切换输入配置文件,以适应不同场景或玩家偏好。
  4. 事件驱动架构

    • 提供了一套事件系统,允许开发者监听玩家加入、离开等重要时刻,并执行相应的初始化或清理操作。
    • 这种设计使得代码更加模块化和易于维护。
  5. 集成 PlayerInput 组件

    • PlayerInput 组件紧密协作,确保每个玩家的输入都能被正确解析并与游戏逻辑挂钩。
    • 自动生成必要的 PlayerInput 实例,并将其添加到场景中,减少了手动设置的工作量。
  6. 支持多种输入设备

    • 不仅限于传统的键盘和鼠标,还支持现代的游戏手柄、触摸屏和其他专用控制器。
    • 确保所有类型的输入设备都能平滑地集成到本地多人游戏中,提供一致的用户体验。

一、PlayerInputManager组件参数

在这里插入图片描述

1、Notification Behavior 通知行为

当玩家进入时PlayerInputManager如何通知关联的对象。它的工作方式和PlayerInput的Behavior相同。忘记了可以回去看看:【PlayerInput组件的介】
在这里插入图片描述

  • SendMessage:将逻辑脚本挂载在和PlayerInput同一对象上,会通过SendMessage通知执行对应函数。
  • BroadcastMessage:将逻辑脚本挂载在其自身或子对象上,会通过BroadcastMessage通知执行对应函数。
  • Invoke UnityEvent Actions:通过拖拽脚本关联函数指明想要执行的函数逻辑。
  • Invoke C Sharp Events:通过C#事件监听处理对应逻辑,通过获取PlayerInput进行事件监听。

2、Join Behavior:玩家加入的行为

在这里插入图片描述

  • Join Players When Button Is Pressed:监听未与任何玩家配对的设备上的按键触发。如果玩家按下按钮并允许加入,使用他们按下按钮的设备加入新玩家。当有新设备加入按下任意键,或者没有任何玩家时按下任意键。实现比如按下任意键加入游戏。
  • Join Players When Join Action Is Triggered:类似于Join Players When Button Is Pressed,但是只有当玩家触发你定义的特定按钮时才加入玩家。例如,您可以设置玩家在按下特定游戏手柄按钮时才加入游戏。实现比如按下手柄中键加入游戏。
  • Join Players Manually:不要自动加入玩家。显式调用【

相关文章:

【unity游戏开发之InputSystem——06】PlayerInputManager组件实现本地多屏的游戏(基于unity6开发介绍)

文章目录 PlayerInputManager 简介1、PlayerInputManager 的作用2、主要功能一、PlayerInputManager组件参数1、Notification Behavior 通知行为2、Join Behavior:玩家加入的行为3、Player Prefab 玩家预制件4、Joining Enabled By Default 默认启用加入5、Limit Number Of Pl…...

算法刷题Day29:BM67 不同路径的数目(一)

题目链接 描述 解题思路: 二维dp数组初始化。 dp[i][0] 1, dp[0][j] 1 。因为到达第一行第一列的每个格子只能有一条路。状态转移 dp[i][j] dp[i-1][j] dp[i][j-1] 代码: class Solution: def uniquePaths(self , m: int, n: int) -> int: #…...

c语言网 1130数字母

原题 题目描述 输入一个字符串,数出其中的字母的个数. 输入格式 一个字符串&#xff0c;不包含空格&#xff08;长度小于100&#xff09; 输出格式 字符串中的字母的个数 样例输入 复制 124lfdk54AIEJ92854&%$GJ 样例输出 复制 10 #include<iostream> #include<cc…...

UG二开UF-常用方法

1&#xff0c;带有星号的TAG用法 UF_OPER_ask_cutter_group&#xff08;tag_t oper,tag_t * group&#xff09; 2.使用string头文件 #include <afxwin.h> tag_t dj NULL; UF_OPER_ask_cutter_group(objects[0],&dj);//查询指定操作所在的刀具组tag 2&#xff0…...

美国本科申请文书PS写作中的注意事项

在完成了introduction之后&#xff0c;便可进入到main body的写作之中。美国本科申请文书PS的写作不同于学术论文写作&#xff0c;要求你提出论点进行论证之类。PS更多的注重对你自己的经历或者motivation的介绍和描述。而这一描述过程只能通过对你自己的过往的经历的展现才能体…...

内存泄漏的通用排查方法

本文聊一聊如何系统性地分析查找内存泄漏的具体方法&#xff0c;但不会具体到哪种语言和具体业务代码逻辑中&#xff0c;而是会从 Linux 系统上通用的一些分析方法来入手。这样&#xff0c;不论你使用什么开发语言&#xff0c;不论你在开发什么&#xff0c;它总能给你提供一些帮…...

【Python】第五弹---深入理解函数:从基础到进阶的全面解析

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、函数 1.1、函数是什么 1.2、语法格式 1.3、函数参数 1.4、函数返回值 1.5、变量作用域 1.6、函数…...

读书笔记--分布式服务架构对比及优势

本篇是在上一篇的基础上&#xff0c;主要对共享服务平台建设所依赖的分布式服务架构进行学习&#xff0c;主要记录和思考如下&#xff0c;供大家学习参考。随着企业各业务数字化转型工作的推进&#xff0c;之前在传统的单一系统&#xff08;或单体应用&#xff09;模式中&#…...

关于WPF中ComboBox文本查询功能

一种方法是使用事件&#xff08;包括MVVM的绑定&#xff09; <ComboBox TextBoxBase.TextChanged"ComboBox_TextChanged" /> 然而运行时就会发现&#xff0c;这个事件在疯狂的触发&#xff0c;很频繁 在实际应用中&#xff0c;如果关联查询数据库&#xff0…...

解析“in the wild”——编程和生活中的俚语妙用

解析“in the wild”——编程和生活中的俚语妙用 看下面的技术文章中遇到 in the wild这个词&#xff0c;想要研究一下&#xff0c;遂产生此文。 Are there ever pointers to pointers to pointers? There is an old programming joke which says you can rate C programmers…...

蓝桥杯练习日常|c/c++竞赛常用库函数(下)

书接上回......蓝桥杯算法日常|c\c常用竞赛函数总结备用-CSDN博客 目录 书接上回......https://blog.csdn.net/weixin_47011416/article/details/145290017 1、二分查找 2、lower_bound uper_bound 3、memset&#xff08;&#xff09; 函数原型 参数说明 返回值 常见用…...

Mybatis-plus缓存

mybatis-plus缓存 MyBatis-Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上提供了更多的便利性和强大的功能&#xff0c;包括但不限于分页、条件构造器、通用 Mapper、代码生成器等。MyBatis-Plus 也内置了基础的缓存功能&#xff0c;但需要注意的是&#xff…...

LockSupport概述、阻塞方法park、唤醒方法unpark(thread)、解决的痛点、带来的面试题

目录 ①. 什么是LockSupport? ②. 阻塞方法 ③. 唤醒方法(注意这个permit最多只能为1) ④. LockSupport它的解决的痛点 ⑤. LockSupport 面试题目 ①. 什么是LockSupport? ①. 通过park()和unpark(thread)方法来实现阻塞和唤醒线程的操作 ②. LockSupport是一个线程阻塞…...

基于 WPF 平台使用纯 C# 实现动态处理 json 字符串

一、引言 在当今的软件开发领域&#xff0c;数据的交换与存储变得愈发频繁&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&#xff0c;以其简洁、易读、便于解析和生成的特点&#xff0c;被广泛应用于各种应用程序中。在 W…...

Rust:Rhai脚本编程示例

当然&#xff0c;以下是一个简单的Rhai脚本编程示例&#xff0c;展示了如何在Rust中使用Rhai执行脚本。 首先&#xff0c;你需要确保你的Rust项目中包含了rhai库。你可以在你的Cargo.toml文件中添加以下依赖项&#xff1a; [dependencies] rhai "0.19" # 请检查最…...

skynet 源码阅读 -- 启动主流程

Skynet 启动主流程分析 Skynet 是一个轻量级、高并发的服务器框架。它在启动时会进行一系列初始化操作&#xff0c;并启动多个不同功能的线程&#xff08;Monitor、Timer、Worker、Socket&#xff09;&#xff0c;从而实现消息分发、定时器、网络I/O等核心功能。本文主要从 ma…...

活动回顾和预告|微软开发者社区 Code Without Barriers 上海站首场活动成功举办!

Code Without Barriers 上海活动回顾 Code Without Barriers&#xff1a;AI & DATA 深入探索人工智能与数据如何变革行业 2025年1月16日&#xff0c;微软开发者社区 Code Without Barriers &#xff08;CWB&#xff09;携手 She Rewires 她原力在大中华区的首场活动“AI &…...

Workerman和Swoole有什么区别

Workerman和Swoole都是PHP的socket服务器框架&#xff0c;它们之间存在一些显著的区别&#xff0c;主要体现在以下几个方面&#xff1a; 一、实现语言与性能 Workerman&#xff1a;使用纯PHP实现。由于PHP本身的性能限制&#xff0c;Workerman在某些方面可能不如C语言实现的框…...

项目部署(springboot项目)

1、安装Nginx&#xff0c;并开启 2、前端项目打包&#xff1a;npm run build:prod--->dist 3、后端项目打包&#xff1a;install--->xxx.jar 4、开放需要的端口号&#xff1a;比如我的后端项目端口号为8282&#xff0c;则需要防火墙和服务器同时开发8282端口 5、将di…...

从0到1:C++ 开启游戏开发奇幻之旅(一)

目录 为什么选择 C 进行游戏开发 性能卓越 内存管理精细 跨平台兼容性强 搭建 C 游戏开发环境 集成开发环境&#xff08;IDE&#xff09; Visual Studio CLion 图形库 SDL&#xff08;Simple DirectMedia Layer&#xff09; SFML&#xff08;Simple and Fast Multim…...

Python-列表

3.1 列表是什么 在Python中&#xff0c;列表是一种非常重要的数据结构&#xff0c;用于存储一系列有序的元素。列表中的每个元素都有一个索引&#xff0c;索引从0开始。列表可以包含任何类型的元素&#xff0c;包括其他列表。 # 创建一个列表my_list [1, 2, 3, four, 5.0]…...

下载Visual Studio Community 2019

官方链接如下&#xff1a;Visual Studio Community 2019下载链接 https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/system-requirements#download 目前官方仅建议2022版&#xff0c;已经关闭vs2019等旧版本&#xff0c;哪天开放了&#xff0c;记得踢我一下。 …...

MongoDB平替数据库对比

背景 项目一直是与实时在线监测相关&#xff0c;特点数据量大&#xff0c;读写操作大&#xff0c;所以选用的是MongoDB。但按趋势来讲&#xff0c;需要有一款国产数据库可替代&#xff0c;实现信创要求。选型对比如下 1. IoTDB 这款是由清华大学主导的开源时序数据库&#x…...

c++ set/multiset 容器

1. set 基本概念 简介&#xff1a; 所有元素都会在插入时自动排序本质&#xff1a; set/multiset属于关联式容器&#xff0c;底层结构是用二叉树实现。set 和 multiset 区别&#xff1a; set容器不允许有重复的元素。 multiset允许有重复的元素。2. set 构造和赋值 构造&a…...

SCRM在企业私域流量与客户管理中的变革之路探索

内容概要 在当今数字化高速发展的时代&#xff0c;SCRM&#xff08;社交客户关系管理&#xff09;作为一种新的管理工具&#xff0c;正逐渐成为企业私域流量管理和客户关系维护的重要基石。它不仅仅是一种软件工具&#xff0c;更是一种整合客户数据和关系管理的全新思维方式。…...

爱的魔力转圈圈,基于carsim与simulink模拟仰望u8原地调头

仰望U8原地转向的示意图如下&#xff0c;不动方向盘的情况下&#xff0c;车可以自己转圈圈&#xff1a; 原理也很简单&#xff0c;仰望u8是四轮驱动&#xff0c;四个轮子都单独由四个轮边电机驱动。主要我们将左右的车轮轮速控制成左右两边轮速相同&#xff0c;但是方向相反&am…...

2025多目标优化创新路径汇总

多目标优化是当下非常热门且有前景的方向&#xff01;作为AI领域的核心技术之一&#xff0c;其专注于解决多个相互冲突的目标的协同优化问题&#xff0c;核心理念是寻找一组“不完美但均衡”的“帕累托最优解”。在实际中&#xff0c;几乎处处都有它的身影。 但随着需求场景的…...

输出九九乘法表

# 题目&#xff1a;输出九九乘法表 #(1) for i in range(1,10): #行数&#xff0c;1到9for j in range(1,10): # 列数1到9resulti*jprint(f"{i}*{j}{result}",end"\t")print("\n")#(2) for i in range(1,10): #行数for j in range(1,i1): #列数1…...

基于微信小程序的新闻资讯系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

vim如何解决‘’文件非法关闭后,遗留交换文件‘’的问题

过程描述&#xff1a; 由于我修改文件时&#xff08;一定得修改了文件&#xff0c;不做任何修改不会产生这个问题&#xff09;的非法关闭&#xff0c;比如直接关闭虚拟机&#xff0c;或者直接断开远程工具的远程连接&#xff0c;产生了以下遗留交换文件的问题&#xff1a; 点击…...