我正在试用Unity,并创建了一个多玩家本地合作环境。我有一个玩家输入管理器,每当有新设备连接时,它都会创建一个新的玩家。这些玩家有一个设置为使用c#事件的玩家输入组件。然后我有一些代码,用于侦听事件并将其记录到控制台。我希望能够区分玩家,但此时事件对于每个设备上的每个输入被激发。我看过无数关于输入系统的教程,但是本地多人游戏似乎从来没有被解决过。我能想到的所有解决方案都很糟糕。我可以让它在send、broadcast和unity的事件中工作,但是我想知道如何在c#事件中实现它。
cwdobuhd1#
我觉得你不能通过事件系统,不能。但是,如果您直接使用输入管理器(IidoEinput.GetButtonDown()),那么您可以进入项目设置并将按钮和轴设置为特定于游戏手柄。从本质上讲,您需要做的是复制项目设置输入管理器中的所有按钮和轴,无论您想要支持多少播放器,然后遍历它们并将操纵杆索引设置为固定的自定义值。然后,例如,你将有“Jump 1”到“Jump 4”,而不是有一个“Jump”按钮,每个按钮都有自己的游戏手柄。有关详细信息,请参见虚拟轴表中的最后一项:https://docs.unity3d.com/Manual/class-InputManager.html
1条答案
按热度按时间cwdobuhd1#
我觉得你不能通过事件系统,不能。
但是,如果您直接使用输入管理器(IidoEinput.GetButtonDown()),那么您可以进入项目设置并将按钮和轴设置为特定于游戏手柄。
从本质上讲,您需要做的是复制项目设置输入管理器中的所有按钮和轴,无论您想要支持多少播放器,然后遍历它们并将操纵杆索引设置为固定的自定义值。
然后,例如,你将有“Jump 1”到“Jump 4”,而不是有一个“Jump”按钮,每个按钮都有自己的游戏手柄。
有关详细信息,请参见虚拟轴表中的最后一项:https://docs.unity3d.com/Manual/class-InputManager.html