unity3d 使用Unity的InputSystem时,有没有办法在使用c#事件时区分玩家?

5jvtdoz2  于 2023-02-16  发布在  C#
关注(0)|答案(1)|浏览(124)

我正在试用Unity,并创建了一个多玩家本地合作环境。我有一个玩家输入管理器,每当有新设备连接时,它都会创建一个新的玩家。这些玩家有一个设置为使用c#事件的玩家输入组件。然后我有一些代码,用于侦听事件并将其记录到控制台。我希望能够区分玩家,但此时事件对于每个设备上的每个输入被激发。
我看过无数关于输入系统的教程,但是本地多人游戏似乎从来没有被解决过。我能想到的所有解决方案都很糟糕。我可以让它在send、broadcast和unity的事件中工作,但是我想知道如何在c#事件中实现它。

cwdobuhd

cwdobuhd1#

我觉得你不能通过事件系统,不能。
但是,如果您直接使用输入管理器(IidoEinput.GetButtonDown()),那么您可以进入项目设置并将按钮和轴设置为特定于游戏手柄。
从本质上讲,您需要做的是复制项目设置输入管理器中的所有按钮和轴,无论您想要支持多少播放器,然后遍历它们并将操纵杆索引设置为固定的自定义值。
然后,例如,你将有“Jump 1”到“Jump 4”,而不是有一个“Jump”按钮,每个按钮都有自己的游戏手柄。
有关详细信息,请参见虚拟轴表中的最后一项:https://docs.unity3d.com/Manual/class-InputManager.html

相关问题