引擎ECS框架中system的語法糖是怎么實現的,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
目前創新互聯公司已為近1000家的企業提供了網站建設、域名、虛擬主機、網站托管、企業網站設計、蘆淞網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
集(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庫上工作了很長時間的人)表達以下問題:- 編譯的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的語法糖是怎么實現的
標題路徑:http://m.newbst.com/article32/jeicsc.html
成都網站建設公司_創新互聯,為您提供網站內鏈、做網站、面包屑導航、網站改版、手機網站建設、網站設計
廣告
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源:
創新互聯