温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

引擎ECS框架中system的语法糖是怎么实现的

发布时间:2021-11-23 22:14:37 来源:亿速云 阅读:119 作者:柒染 栏目:大数据

引擎ECS框架中system的语法糖是怎么实现的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

集(Bevy)引擎ECS框架中system的语法糖是怎么实现的

群集(Bevy)引擎中的system就是普通的Rust函数,这样的设计及其符合人体工程学,就像作者本人在群集(Bevy)引擎的介绍中说的那样,目前找不到比群集引擎更符合人体工程学的ECS框架设计了。
推特上有人简单分析了一下群集引擎中这部分代码的语法糖是怎么实现的,考虑到不少小伙伴并不能够随时访问推特,在这里我把大概意思搬运过来。
system作为普通的Rust函数,它的参数也就代表了需要访问的那些组件的查询。群集提供的主要示例非常引人注目,系统就是函数,组件就是结构体,你不需要实现额外的trait,就能够让ECS框架正常运作。
use bevy::prelude::*;
就像上面的示例一样,只要按照一定的规则写出函数,在App的构建模式中调用  .system()  方法就可以把函数变成系统。
一个普通的Rust函数在调用  .system()  这个方法之后,将被转换为一个  Box<dyn System>  ,对于群集支持的两种系统,采用  IntoForEachSystem  和  IntoQuerySystem  这两个trait进行转换。
   
// 具体代码可以去群集的文档里看,这里只举例了IntoQuerySystem这个trait

pub trait IntoQuerySystem<Commands,R,Q> {    fn system(self) -> Box<dyn System>;}
有了trait之后只需要把trait实现给我们可能会调用的函数,一个一个函数的去实现肯定是不可能的,翻看群集的这部分源码能够看到大量的使用了宏:
具体的代码可以去看群集的源码,总结来说,群集实现的这种及其符合人体工程学的ECS架构,就是基于宏加上trait来实现的。

Rust写数据可视化的一个小教程

该文用到了  plotly  库,是一个可以动手实验的小教程。
教程原文  :https://shahinrostami.com/posts/programming/rust-notebooks/box-plots-at-the-olympics/

OrbTk 0.3.1-alpha3发布了

之前关注过Redox的应该知道OrbTk是他们团队给该操作系统设计的Gui库,现在这个库在crates.io发布了最新的版本,相较于之前性能更好了,也有了新的主题切换引擎可以选择。还更新了三种UI组件(ProgressBar,NumericBox,TabWidget)。
Read More  :https://github.com/redox-os/orbtk/releases/tag/0.3.1-alpha3

“Rust没有稳定的ABI”

作者见过GNOME的用户(通常是在C库上工作了很长时间的人)表达以下问题:
  1. 编译的Rust代码没有稳定的ABI(应用程序二进制接口)。
  2. 因此,我们不能使用传统的Linux发行版共享库。
  3. 同时,Rust还将其整个标准库与它所编译的每个二进制文件捆绑在一起,这使得Rust构建的库非常庞大。
作者是那种认为大部分基础设施都应该用Rust重写的人,所以这些问题,也是作者本人非常关注的事。
因此作者写了一篇关于这个问题文章。
Read More  :https://people.gnome.org/~federico/blog/rust-stable-abi.html

docs.rs 已经更新了文档覆盖功能

docs.rs更新了文档覆盖功能  

关于构建者模式的一个简短介绍

一个关于构建者模式的简短介绍。
以及提供了三个实际项目中的用例。
Read More  :https://matklad.github.io/2020/08/12/who-builds-the-builder.html

This Week in Rust

每周官方都会更新的This Week in Rust又更新了。
这已经是第351期了。
基本上最近有关Rust的动向里面都收集了,个人一直比较关注的是Tooling类的动向吧,rust-analyzer越来越好用了。
其他动向日报基本都涉及过了,这里不再提及,主要说两个,一个是每月都会更新一次的Rust GameDev,以及最近才更新的区块链相关动向。

关于引擎ECS框架中system的语法糖是怎么实现的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI