引擎ECS框架中system的语法糖是怎么实现的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
目前创新互联公司已为近1000家的企业提供了网站建设、域名、虚拟主机、网站托管、企业网站设计、芦淞网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
集(Bevy)引擎ECS框架中system的语法糖是怎么实现的
群集(Bevy)引擎中的system就是普通的Rust函数,这样的设计及其符合人体工程学,就像作者本人在群集(Bevy)引擎的介绍中说的那样,目前找不到比群集引擎更符合人体工程学的ECS框架设计了。推特上有人简单分析了一下群集引擎中这部分代码的语法糖是怎么实现的,考虑到不少小伙伴并不能够随时访问推特,在这里我把大概意思搬运过来。system作为普通的Rust函数,它的参数也就代表了需要访问的那些组件的查询。群集提供的主要示例非常引人注目,系统就是函数,组件就是结构体,你不需要实现额外的trait,就能够让ECS框架正常运作。use bevy::prelude::*;
就像上面的示例一样,只要按照一定的规则写出函数,在App的构建模式中调用
.system()
方法就可以把函数变成系统。一个普通的Rust函数在调用
.system()
这个方法之后,将被转换为一个
Box
,对于群集支持的两种系统,采用
IntoForEachSystem
和
IntoQuerySystem
这两个trait进行转换。 // 具体代码可以去群集的文档里看,这里只举例了IntoQuerySystem这个trait
pub trait IntoQuerySystem { fn system(self) -> Box;}
有了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库上工作了很长时间的人)表达以下问题:- 编译的Rust代码没有稳定的ABI(应用程序二进制接口)。
- 同时,Rust还将其整个标准库与它所编译的每个二进制文件捆绑在一起,这使得Rust构建的库非常庞大。
作者是那种认为大部分基础设施都应该用Rust重写的人,所以这些问题,也是作者本人非常关注的事。Read More
:https://people.gnome.org/~federico/blog/rust-stable-abi.htmldocs.rs 已经更新了文档覆盖功能
关于构建者模式的一个简短介绍
Read More
:https://matklad.github.io/2020/08/12/who-builds-the-builder.htmlThis Week in Rust
每周官方都会更新的This Week in Rust又更新了。基本上最近有关Rust的动向里面都收集了,个人一直比较关注的是Tooling类的动向吧,rust-analyzer越来越好用了。其他动向日报基本都涉及过了,这里不再提及,主要说两个,一个是每月都会更新一次的Rust GameDev,以及最近才更新的区块链相关动向。关于引擎ECS框架中system的语法糖是怎么实现的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
当前标题:引擎ECS框架中system的语法糖是怎么实现的
分享URL:
http://chengdu.cdxwcx.cn/article/jeicsc.html