大家好!
我在主论坛中问了这个问题,我在那里却找不到一个适合我的答案:我试图设置一个脚本,来读取我的输入,这个输入是由主玩家脚本引用来读取的。问题是,我似乎不知道如何正确使用“started”和“performed”。
这是我在输入读取脚本中的代码
void OnEnable()
{
input.Enable();
input.Player.MainAction.started += OnMainAction;
input.Player.MainAction.performed += OnMainAction;
input.Player.MainAction.canceled += OnMainAction;
}
...
private void OnMainAction(InputAction.CallbackContext _context)
{
_mainActionInput = _context.ReadValueAsButton();
_mainActionInput_Phase = _context.phase;
}
我的问题是,通过深入调试,我认为“started”和“performed”被调用的同时框架,这意味着我的玩家脚本永远不会读取到“start”这个输入,所以当我需要一个输入只读一次,但不希望玩家持续按下按钮来重复执行动作时就有问题了。
我尝试了很多方法,现在唯一的解决方案是,在检查当前阶段是“start”时,设定一个布尔值,然后在协程中等待这帧结束,最后设定布尔值为false。
我想我的这种做法必须还有一种更优雅的解决方案,而之前我是直接在输入读取脚本的update方法中使用WasPressedThisFrame检查是否按下了button(但是在这个背景下用不上),但如果这种方法有问题的话,也许还可以重新尝试。因此我想知道的是,如果有更好的解决方案的话,我们有没有漏掉它呢。
感谢您花时间阅读这个帖子,希望我的问题不违反规则(我知道这不是一个Unity2D的严格问题)。
评论 (0)