<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          換個姿勢擼代碼,歡迎來到ECS的世界!

          共 1660字,需瀏覽 4分鐘

           ·

          2020-10-15 16:44


          前言

          大家好我是IT俠來了!今天我?guī)淼氖荅CS系列文章。對,沒錯這是個系列。
          這個系列將幫助各位同學(xué)入門ECS,會用ECS框架寫游戲。最后說不定你也喜歡上了這種“小眾”而又牛b的編程思想。
          話不說多,今天這篇文章就是讓大家對ECS有一個大概認識,不知道大家準備好沒有,此時我只想喊一句超級英雄出發(fā)前最喜歡喊的一句:“suit up”?。?/section>

          歡迎來到ECS的世界

          正如標題說的一樣,歡迎大家來到ECS的世界。
          其實我之前有寫過一篇文章來說ECS。但是把所有內(nèi)容都寫到一篇里導(dǎo)致文章很長大家也沒有讀的欲望了,而且寫的也不是很好。
          所以這次帶來了全新的ECS框架和一個使用ECS框架做的一個小游戲「我胃口賊6」我將一步一步的帶著大家進入ECS的世界。

          ECS 是啥?

          ECS的全稱是「Entity Component System」可以譯成「實體 組件 系統(tǒng)」這3個概念就是ECS框架不可缺少的組成部分。下面依次來介紹下。

          實體

          實體它在ECS中扮演的是組件的「載體」,實體是不包含任何數(shù)據(jù)和業(yè)務(wù)邏輯的。
          它的數(shù)據(jù)結(jié)構(gòu)很簡單只有一個全局唯一的ID。
          通過實體就可以訪問到身上的組件和組件上面的數(shù)據(jù)。

          組件

          組件只包含數(shù)據(jù),而且沒有能力更新自身的數(shù)據(jù)。
          組件上的數(shù)據(jù)描述了實體的某一個特征。
          想要組件產(chǎn)生作用就必須把組件加載到實體上,單獨的組件在ECS框架中是沒有任何意義的。換句話說就是:組件是為實體而生的。

          系統(tǒng)

          系統(tǒng)的工作就是操作實體。
          你可以給系統(tǒng)定義它所關(guān)心的一個或者多個組件。之后只要是實體上有對應(yīng)的組件,那么就會被系統(tǒng)捕獲到。然后就可以操作這些實體和實體上組件。

          引擎(世界)

          引擎的存在是為了管理實體,組件和驅(qū)動系統(tǒng)運轉(zhuǎn)。
          其實我更喜歡把「引擎」叫成「世界」。所有實體,組件,系統(tǒng)都是加載一個「世界」里??梢杂泻芏嗪芏嗟氖澜绫舜藳]有交集。就像平行時空一樣。

          ECS中的Hello World

          啥語言的第一個例子都是Hello World 下面我就用ECS框架來實現(xiàn)Hello World。
          看不懂代碼沒關(guān)系,只是讓大家知道用ECS是如何寫Hello World的。
          在之后的文章我會慢慢講解。
          ??//初始化一個世界
          ??let?ecs?=?ECS();
          ??//定義說話系統(tǒng)
          ??let?_talk?=?ecs.system("TalkSystem",100);
          ??//?監(jiān)聽有Talk組件的實體
          ??_talk.on("Talk",function(ent:any){
          ????console.log(ent.Talk.say);
          ??});
          ??//?讓系統(tǒng)開始工作
          ??ecs.startSystems();
          ??//創(chuàng)建一個實體
          ??let?human?=?ecs.ent();
          ??//給這個實體加一個Talk組件?讓他說一句?Hello?World
          ??//?下面定義完成之后?Talk系統(tǒng)就會捕獲到human實體?并且打印這個實體說的話?-?Hello?World
          ??ecs.com("Talk",{say:"Hello?World"},human);
          ??

          結(jié)束語

          本篇文章主要是讓大家對ECS框架有個基本認識。
          最后用Hello World給本篇文章收一個尾,也為下一篇ECS入門篇開個頭。
          那么,各位 ECS 入門篇再見。

          開發(fā)者實踐游戲開發(fā)、副業(yè)掙錢,新的種子又開始發(fā)芽!



          瀏覽 28
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青娱乐人人草 | 九哥操屄网 | 日日夜夜狠狠 | 九色网站91| 久久精品在 |