Unity最好的方法来覆盖`StandardAssetsScripts`

You*_* H. 3 c# input unity-game-engine

我正在开发一个FPS游戏,我正在使用FPSController标准资产附带的.我正在开发一个游戏手柄控制器来控制手机游戏.

配置控制器的所有输入后,我想替换代码如下:

if (!m_Jump)
{
   m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
}
Run Code Online (Sandbox Code Playgroud)

代码应如下所示:

if(Application.platform == RuntimePlatform.Android)
{
    if (!m_Jump)
    {
        m_Jump = Input.GetButtonDown("Joystick A");
    }
}else{
    if (!m_Jump)
    {
        m_Jump = CrossPlatformInputManager.GetButtonDown("Jump");
    }
}
Run Code Online (Sandbox Code Playgroud)

修改FPS Controller脚本和添加这些输入的最佳方法是什么?

提前致谢.

Rem*_*_rm 5

您可以通过不需要编辑或添加任何附加代码的方式解决此问题.

在编辑>项目设置>输入下,您可以找到InputManager和"轴".在这里,您将找到所有预定义的输入值及其相应的按钮.如果您展开输入轴"跳转"您将看到它有一个名为"正面按钮"的变量,默认为空格,以及一个空的"替代按钮".如果您将所需按钮添加到备用按钮部分,它将CrossPlatformInputManager.GetButtonDown("Jump"); 在按下游戏手柄上的相应按钮时触发操作.

如果您愿意扩展列表并添加自己的触发器,也可以.

输入管理器提供对键盘和鼠标,操纵杆和游戏手柄的开箱即用支持更多信息可在此处的文档中找到

这样做的好处是,这不需要额外的代码或条件.这可能是最佳化的方式