您好我使用弹性传感器控制Unity视频游戏 - 当用户弯曲他们的二头肌时,角色向前移动。我想在用户收集游戏中的某些对象时激活TENS机器。我有这个工作.....问题是我想激活TENS机器1000ms然后停用它。我可以通过串口从游戏引擎激活/停用TENS机器,我的问题是DELAY功能。当我使用DELAY功能时,它会导致游戏中出现故障或暂停......作为一种解决方法,我尝试使用下面的功能,它会激活TENS,但它不会停用它。
#include <elapsedMillis.h>
#define interval 1000
elapsedMillis timeElapsed;
void triggertens()
{
digitalWrite(TENS, HIGH);
if (timeElapsed > interval) {
timeElapsed -= interval; //reset the timer
digitalWrite(TENS, LOW);}
}
什么是WHILE LOOP,但这也会导致类似DELAY的故障:
void triggertens()
{
elapsedMillis timeElapsed;
while (timeElapsed < interval)
{
digitalWrite(TENS, HIGH);
}
digitalWrite(TENS, LOW);
timeElapsed = 0;
}
任何建议都会很棒。
答案 0 :(得分:0)
为了让Unity能够使用&#34;线程&#34;类型感觉不会阻止使用协程所需的主要执行。 Unity全部在一个线程上运行,因此您编写的任何代码行都需要在运行下一行之前完成执行。看起来你正在使用c或c ++代码来延迟函数并等待一段时间,但是如果你从统一调用该函数,函数将不会返回,直到等待同一个线程的时间(因此制作游戏)出现了暂停)。
为了做到这一点,您需要使用协程在Unity中发生延迟,并告诉您使用的插件在代码的Unity端打开和关闭,而不是从插件代码打开和关闭。