引擎ECS框架中system的語法糖是怎么實(shí)現(xiàn)的,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
![](/upload/ad_content/xuanchuantu-11.jpg)
目前創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、蘆淞網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
集(Bevy)引擎ECS框架中system的語法糖是怎么實(shí)現(xiàn)的
群集(Bevy)引擎中的system就是普通的Rust函數(shù),這樣的設(shè)計(jì)及其符合人體工程學(xué),就像作者本人在群集(Bevy)引擎的介紹中說的那樣,目前找不到比群集引擎更符合人體工程學(xué)的ECS框架設(shè)計(jì)了。推特上有人簡單分析了一下群集引擎中這部分代碼的語法糖是怎么實(shí)現(xiàn)的,考慮到不少小伙伴并不能夠隨時訪問推特,在這里我把大概意思搬運(yùn)過來。system作為普通的Rust函數(shù),它的參數(shù)也就代表了需要訪問的那些組件的查詢。群集提供的主要示例非常引人注目,系統(tǒng)就是函數(shù),組件就是結(jié)構(gòu)體,你不需要實(shí)現(xiàn)額外的trait,就能夠讓ECS框架正常運(yùn)作。use bevy::prelude::*;
就像上面的示例一樣,只要按照一定的規(guī)則寫出函數(shù),在App的構(gòu)建模式中調(diào)用
.system()
方法就可以把函數(shù)變成系統(tǒng)。一個普通的Rust函數(shù)在調(diào)用
.system()
這個方法之后,將被轉(zhuǎn)換為一個
Box<dyn System>
,對于群集支持的兩種系統(tǒng),采用
IntoForEachSystem
和
IntoQuerySystem
這兩個trait進(jìn)行轉(zhuǎn)換。 // 具體代碼可以去群集的文檔里看,這里只舉例了IntoQuerySystem這個trait
pub trait IntoQuerySystem<Commands,R,Q> { fn system(self) -> Box<dyn System>;}
有了trait之后只需要把trait實(shí)現(xiàn)給我們可能會調(diào)用的函數(shù),一個一個函數(shù)的去實(shí)現(xiàn)肯定是不可能的,翻看群集的這部分源碼能夠看到大量的使用了宏:具體的代碼可以去看群集的源碼,總結(jié)來說,群集實(shí)現(xiàn)的這種及其符合人體工程學(xué)的ECS架構(gòu),就是基于宏加上trait來實(shí)現(xiàn)的。Rust寫數(shù)據(jù)可視化的一個小教程
該文用到了
plotly
庫,是一個可以動手實(shí)驗(yàn)的小教程。教程原文
:https://shahinrostami.com/posts/programming/rust-notebooks/box-plots-at-the-olympics/OrbTk
0.3.1-alpha3發(fā)布了
之前關(guān)注過Redox的應(yīng)該知道OrbTk是他們團(tuán)隊(duì)給該操作系統(tǒng)設(shè)計(jì)的Gui庫,現(xiàn)在這個庫在crates.io發(fā)布了最新的版本,相較于之前性能更好了,也有了新的主題切換引擎可以選擇。還更新了三種UI組件(ProgressBar,NumericBox,TabWidget)。Read More
:https://github.com/redox-os/orbtk/releases/tag/0.3.1-alpha3“Rust沒有穩(wěn)定的ABI”
作者見過GNOME的用戶(通常是在C庫上工作了很長時間的人)表達(dá)以下問題:- 編譯的Rust代碼沒有穩(wěn)定的ABI(應(yīng)用程序二進(jìn)制接口)。
- 因此,我們不能使用傳統(tǒng)的Linux發(fā)行版共享庫。
- 同時,Rust還將其整個標(biāo)準(zhǔn)庫與它所編譯的每個二進(jìn)制文件捆綁在一起,這使得Rust構(gòu)建的庫非常龐大。
作者是那種認(rèn)為大部分基礎(chǔ)設(shè)施都應(yīng)該用Rust重寫的人,所以這些問題,也是作者本人非常關(guān)注的事。Read More
:https://people.gnome.org/~federico/blog/rust-stable-abi.htmldocs.rs 已經(jīng)更新了文檔覆蓋功能
關(guān)于構(gòu)建者模式的一個簡短介紹
一個關(guān)于構(gòu)建者模式的簡短介紹。以及提供了三個實(shí)際項(xiàng)目中的用例。Read More
:https://matklad.github.io/2020/08/12/who-builds-the-builder.htmlThis Week in Rust
每周官方都會更新的This Week in Rust又更新了。基本上最近有關(guān)Rust的動向里面都收集了,個人一直比較關(guān)注的是Tooling類的動向吧,rust-analyzer越來越好用了。其他動向日報(bào)基本都涉及過了,這里不再提及,主要說兩個,一個是每月都會更新一次的Rust GameDev,以及最近才更新的區(qū)塊鏈相關(guān)動向。關(guān)于引擎ECS框架中system的語法糖是怎么實(shí)現(xiàn)的問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
當(dāng)前題目:引擎ECS框架中system的語法糖是怎么實(shí)現(xiàn)的
標(biāo)題路徑:http://aaarwkj.com/article32/jeicsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、做網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站改版、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)