如何统一模拟键盘按键?

时间:2019-04-10 07:13:16

标签: c# unity3d

我目前正在我的Grad项目上工作,它是一个自动驾驶仪,我正在统一制作飞机,而所有机器学习内容都在python中制作,python代码将仅返回飞机将“上,下,左,右,引擎加电,...),C#代码将处理所有物理问题,依此类推,因此我想模拟一下,如果(左)则计算机将按(A)。

我已经尝试了inputsimulator,但仅此而已。

string t = GUIUtility.systemCopyBuffer; // this will get the input from python

if (t=="left") // if what the neural network choose is left do this
{
    //what I need to convert the "left" to an actual keyboard press to
    //be used by the crossplatformmanager
}
float roll = CrossPlatformInputManager.GetAxis("Horizontal");

我希望:

if (t=="left")
{ 
    keyboardbutton="A" 
}

,并且CrossPlatformInputManager.GetAxis会像我物理按下该键一样对待它。

1 个答案:

答案 0 :(得分:0)

我认为这是一个XY问题,通常对于无法控制的程序需要输入仿真,因为您无法直接访问代码。但是对于您的问题,python和unity项目都是由您自己编写的,因此您无需模拟输入,只需调用该方法即可。

例如,如果您想通过水平轴输入来滚动某物,则可以这样做:

var h = Input.GetAxis("Horizontal");
Roll(h);

然后,如果值来自剪贴板:

float h;
string t = GUIUtility.systemCopyBuffer;
switch(t) {
   case "left": h = -1f; break;
   case "right": h = 1f; break;
   ....
}
Roll(h);