我有一个使用Amethyst 游戏引擎的玩具项目。我正在尝试编写自己的System代码来收集用户输入,类似于FlyMovementSystem他们在这里ArcBallRotationSystem实现的。
看来收集鼠标移动的正确方法是通过EventChannel<Event>,它Event来自winitAmethyst 所依赖的板条箱,但不会重新导出。
winit::Event与紫水晶相同的“正确”引用方式是什么?
winit到我的Cargo.toml文件中吗?如果是这样,指定版本的推荐方法是什么?(是否可以使用一些关键字代替特定版本号,以允许我“继承”Amethyst 的依赖关系?)目前这个问题还没有很好的解决方案。最好的解决方法是添加对相同版本的传递依赖的直接依赖:
[dependencies]
foo = "0.1"
bar = "0.2" # `foo` depends on bar 0.2 and we need to keep these in sync
Run Code Online (Sandbox Code Playgroud)
您可以使用诸如手动识别所需版本之cargo tree类的工具,并使您的 Cargo.toml 保持最新。我强烈建议添加一条评论,说明您选择特定版本的原因。foo
如果在不使用底层依赖项的情况下,板条箱很难使用,我还鼓励您向父板条箱提出问题,要求他们重新导出所需的内容。Tokio 板条箱就是一个很好的例子,它重新出口大量的期货板条箱。
与您的想法类似,我建议有一种方法使用相同的版本作为依赖项。相反,Cargo 团队选择添加公共依赖和私有依赖的区别。虽然从工程角度来看这将是一个更好的解决方案,但在实施方面却几乎没有取得任何进展。
也可以看看: