我正在开发 FPS 游戏,我正在使用标准 Assets 附带的 FPSController
。我正在开发一个游戏 handle Controller 来控制手机游戏。
配置 Controller 的所有输入后,我想将代码替换如下:
if (!m_Jump)
{
m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
}
代码应如下所示:
if(Application.platform == RuntimePlatform.Android)
{
if (!m_Jump)
{
m_Jump = Input.GetButtonDown("Joystick A");
}
}else{
if (!m_Jump)
{
m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
}
}
提前致谢。
最佳答案
您可以通过不需要编辑或添加任何附加代码的方式解决此问题。
在编辑>项目设置>输入下,您可以找到输入管理器和“轴”。在这里,您将找到所有预定义的输入值及其相应的按钮。如果您展开输入轴“Jump”,您将看到它有一个名为“Positive button”的变量,默认情况下是空格,还有一个空的“alternative button”。如果您将所需的按钮添加到备用按钮部分,它会在按下游戏 handle 上的相应按钮时触发 CrossPlatformInputManager.GetButtonDown("Jump");
操作。
如果您更喜欢扩展列表并添加您自己的触发器,您也可以。
输入管理器为键盘和鼠标、操纵杆和游戏 handle 提供开箱即用的支持。更多信息可以在文档 here 中找到
这样做的好处是不需要额外的代码或条件。这可能是最优化的方式来解决它
关于c# - Unity 覆盖 `StandardAssetsScripts` 的最佳方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51721101/