【发布时间】:2021-12-25 10:22:43
【问题描述】:
由于某种原因,无法识别按下/释放的键。只有 isKeyHeld 方法运作良好。在验证输入之前调用更新方法。我做错了什么?
HashSet<Keys> held_heys_ = new HashSet<Keys>();
HashSet<Keys> previous_held_heys_ = new HashSet<Keys>();
public void beginNewFrame() {
previous_held_heys_ = held_heys_;
held_heys_.Clear();
}
public void update(Keys[] keys) {
foreach(Keys key in keys) {
held_heys_.Add(key);
}
}
public bool isKeyHeld(Keys key) {
return held_heys_.Contains(key);
}
public bool wasKeyPressed(Keys key) {
return !previous_held_heys_.Contains(key) && held_heys_.Contains(key);
}
public bool wasKeyReleased(Keys key) {
return previous_held_heys_.Contains(key) && !held_heys_.Contains(key);
}
【问题讨论】:
-
你想在这里做什么 previous_held_heys_ =held_heys;_ 这不是数据的副本,而是第二次引用的分配首先。换句话说,这两个变量引用了相同的数据