【问题标题】:How to simulate a key press on button click - Unity如何在按钮单击时模拟按键 - Unity
【发布时间】:2019-11-20 21:18:23
【问题描述】:

我对 Unity 中的脚本非常陌生,我正在尝试创建一个按钮,一旦单击它就需要模拟按下的“F”键(拿起一个项目)

这是我当前的代码,在写这篇文章之前我已经查看了整个统一论坛,但找不到任何有用的东西。

代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Collections;
public class button : MonoBehaviour {

    public void ButtonToClick(int clickToButton)
    {
        SendKeys.Send("F");
    }
} 

【问题讨论】:

  • 为什么sthis有一个javascript标签?
  • OP 你是为什么平台创建的?当您写“模拟”时,您的意思是用户将使用 UI/Touch 按钮还是您的意思是按下键盘?
  • 我不明白为什么所有这些答案。他们都没有真正回答这个问题,他们不应该工作。模拟按键是平台相关,因为这不是当前 Unity API 的任何部分。首先,您必须提及您的目标平台。其次,你在每个平台上都有谷歌,找到一个 C++、Java(Android) 代码来模拟按键,然后使用 C# 将它们组合在一起并制作一个单一的 API 来做到这一点。其他任何事情,你都是在浪费时间。
  • @Programmer 实际上 bilal1409 的答案是唯一解决这个问题的答案,即使仅适用于 Windows 平台。
  • @Galandil 是的,它确实解决了这个问题,但部分原因是它仅适用于 Windows,他应该提到这一点,因为这个问题中没有 windows 标签。此外,您甚至不需要他链接的那个库。您可以从 C# 调用 C++ 库 directly 以使其在 Windows 上运行。

标签: c# unity3d


【解决方案1】:

我认为模拟按键不是正确的方法。

相反,您应该在单击按钮时调用 PickUp 函数,就像在按下 F 键时调用 Pickup 一样。

// Drag & Drop the object holding the script to the `OnClick` listener of your button
// Then, simply select the `Pickup` function
public void Pickup()
{
    // code ....
}

private void Update()
{
    if( Input.GetKeyDown( KeyCode.F ) )
        Pickup() ;
}

【讨论】:

  • 这是最好的方法。但是在我的应用程序中,我使用统一导航系统(不使用任何其他功能)使用箭头和输入在按钮之间移动,如何模拟这种情况下的箭头点击?
  • 你的意思是你想要一个 GUI 按钮(称为 B)来模拟箭头的按键,以便在按钮 A1 和A2?我担心这是不可能的,因为一旦你点击 GUI 按钮 B,A2 就会被选中(多亏了一个自定义函数),但是,B 将被选中(因为您已单击它),因此导航系统会损坏。不过我可能是错的,因为我不知道何时准确地选择了 Button(在引发 OnClick 事件之前/之后)
  • @Hellium,如果您创建一个系统,为每个 UI 元素分配一个值,然后让箭头向上和向下循环该 int 值并选择当前按 int 值选择的 UI 元素,这将起作用.它更手动,但它会工作。要使其使用向上和向下箭头,您可以为垂直创建一个 int 值,然后为水平使用左/右。
  • 如何包含主拾取控制器 C 脚本,因为这是写在按钮 C 脚本上
  • 我不认为 Pickup 脚本应该附加到 GUI 按钮上,而应该附加到拾取对象的实体上(可能是你的玩家)。然后,您将能够将按钮 C 绑定到 Pickup 脚本。
【解决方案2】:

来自question:

  1. 在http://inputsimulator.codeplex.com上下载zip文件

  2. 在 Unity 项目中使用您的脚本 (C#) 将其解压缩到 Assets 目录

  3. 重新加载 MonoDevelop(如果已打开)

  4. 在顶部写入脚本:使用 WindowsInput;

  5. 在你的课堂上你可以使用这个,例如:

    InputSimulator.SimulateKeyPress (VirtualKeyCode.RIGHT); //模拟右箭头按下

编辑:

你可以不用上面的链接使用 Nuget 安装它:

Install-Package InputSimulator

在github 上检查它的存储库。

【讨论】:

  • 这在移动设备上可以工作吗? - 预制库存脚本使用键 F,因此我要路由一个按钮,以便用户可以通过手机拿起它
  • 这个库模拟按键点击,就像点击相应的按键一样
  • 你不需要下载任何东西来模拟一个普通的统一按钮按下,只需使用 Unity 的 Input 类代替,我会在下面写一个答案来解释它。
  • 此方法有效,但仅适用于 Windows,不适用于 iOS/Android。
  • 警告:网站返回错误和安全警告。我不建议进入
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 2017-05-08
  • 2019-12-24
  • 2018-11-06
相关资源
最近更新 更多