You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#旧输入系统为何失效?按键触发代码无法运行求助

问题排查与解决方案

先解决代码无响应的核心问题,再补充生成GameObject的实现逻辑:

一、按键无响应的排查点

  • 确认脚本已挂载到场景中处于激活状态的GameObject上,且脚本组件本身未被禁用(Inspector面板里脚本前的勾选框为激活状态)。
  • 运行游戏时,点击Unity的Game窗口获取焦点,否则按键输入会被编辑器其他窗口拦截。
  • 若项目启用了新Input System,旧的Input.GetKey会失效,可在Project Settings > Player > Active Input Handling中选择Both或Old切换回旧输入系统,或改用新Input System的API。
  • 若需要按一次E键触发一次逻辑(而非按住持续触发),将Input.GetKey替换为Input.GetKeyDown——前者是按住期间每帧触发,后者仅在按键按下瞬间触发一次。

二、添加生成GameObject的逻辑

假设你已有目标预制体,可参考以下修改后的代码:

// 在Inspector面板拖拽你的预制体到这个字段
public GameObject spawnPrefab;
// 控制生成位置,可绑定到场景中的空物体或玩家子物体
public Transform spawnPoint;

void Update()
{
    if (Input.GetKeyDown(KeyCode.E))
    {
        Debug.Log("E键已按下,开始生成物体");
        if (spawnPrefab != null)
        {
            // 生成预制体,使用spawnPoint的位置与旋转参数
            Instantiate(spawnPrefab, spawnPoint.position, spawnPoint.rotation);
        }
        else
        {
            Debug.LogError("请先为spawnPrefab字段赋值预制体!");
        }
    }
}

使用说明:

  1. 在Inspector面板中,将目标预制体拖入spawnPrefab字段。
  2. 若不需要自定义生成位置,可直接用transform.position和transform.rotation替代spawnPoint的参数。

内容的提问来源于stack exchange,提问作者Blast123b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:50:17