作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用新的输入系统并调用 Unity 事件将输入传递给我的 bevaviour 脚本。这是显示通过输入进行简单移动的示例代码
public class MovementBehaviour : MonoBehaviour
{
public void Move(InputAction.CallbackContext inputContext)
{
Vector2 movementDirection = inputContext.ReadValue<Vector2>();
transform.position += new Vector3(movementDirection.x, movementDirection.y, transform.position.z);
}
}
我想在我的单元测试中测试它,但为此我必须传入一个新的
InputAction.CallbackContext
.所以我的示例单元测试可能看起来像
[TestFixture]
public class MovementBehaviourTests
{
[Test]
public void ItShouldMove()
{
GameObject gameObject = new GameObject();
MovementBehaviour movementBehaviour = gameObject.AddComponent<MovementBehaviour>();
// movementBehaviour.Move(); // pass in Vector2.right
Assert.AreEqual(gameObject.transform.position, Vector3.right);
}
}
不幸的是,我无法弄清楚如何设置新实例以传入
Vector2.right
输入,以便我可以测试输出。
最佳答案
您可以为 InputAction 创建一个新的类驱动程序,如下所示:
(仅测试)
public class InputActionTest Extends InputAction{
ReadValue<Vector2>(){
return Vector2;
}
}
[TestFixture]
public class MovementBehaviourTests
{
[Test]
public void ItShouldMove()
{
GameObject gameObject = new GameObject();
MovementBehaviour movementBehaviour =
gameObject.AddComponent<MovementBehaviour>();
movementBehaviour.Move(new InputActionTest());
Assert.AreEqual(gameObject.transform.position, Vector3.right);
}
}
Assert.AreEqual 似乎一直是编译器错误或 False
关于c# - 如何设置 InputAction.CallbackContext 的新实例来测试输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68453050/
我正在使用新的输入系统并调用 Unity 事件将输入传递给我的 bevaviour 脚本。这是显示通过输入进行简单移动的示例代码 public class MovementBehaviour : Mo
我是一名优秀的程序员,十分优秀!