c# - Unity覆盖`StandardAssetsScripts`的最佳方法
问题描述
我正在开发一个 FPS 游戏,我正在使用FPSController
标准资产附带的 The。我正在开发一个游戏手柄控制器来控制手机游戏。
配置控制器的所有输入后,我想替换代码如下:
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");
}
}
修改
FPS Controller
脚本和添加这些输入的最佳方法是什么?
提前致谢。
解决方案
您可以通过一种不需要您编辑或添加任何附加代码的方式来解决这个问题。
在编辑>项目设置>输入下,您可以找到 InputManager 和“轴”。在这里,您将找到所有预定义的输入值及其相应的按钮。如果展开输入轴“Jump”,您会看到它有一个名为“Positive button”的变量,默认情况下是空格,还有一个空的“alternative button”。如果您将所需的按钮添加到备用按钮部分,它将CrossPlatformInputManager.GetButtonDown("Jump");
在按下游戏手柄上的相应按钮时触发操作。
如果您更喜欢扩展列表并添加自己的触发器,您也可以。
输入管理器为键盘和鼠标、操纵杆和游戏手柄提供开箱即用的支持,更多信息可以在此处的文档中找到
这样做的好处是不需要额外的代码或条件。这可能是最优化的方式
推荐阅读
- reactjs - 有没有办法覆盖 create-react-app webpack 配置中的 ESLintPlugin 选项?
- windows - 权限被拒绝:PostgreSQL
- html - 使用 R Markdown 和 HTML 输出将数学表达式显示为非斜体
- asp.net-core - 为什么我在查询我的 Web API 时收到 401 Unauthorized?
- python - ValueError:检查输入时出错:预期dense_3_input的形状为(33,)但得到的数组形状为(34,)
- c++ - lambda 函数中的临时捕获变量 - C++11
- graphql - 使用反应中继时是否需要始终拉动 id 字段
- entity-framework-core - 使用 Automatonymous 时状态机不一致
- javascript - CSS 过渡淡入但不淡出
- flutter - 我的小部件没有出现在屏幕上