【熱更新】C#反射和Lua

1.前言

        前幾天某知名工作室在旁邊某知名大學現場招聘實習生,懷着一絲忐忑請了一天假,拉了3個小夥伴(3個都是策劃( ・´ω`・ ))跑去試試。宣講會現場,旁邊坐滿了985的學霸,當時就慫了,最後想着反正都是來送人頭的就硬着頭皮遞了簡歷......

        半個多小時的宣講會結束後,出了教室等待面試通知。等的時候聽見旁邊學霸說技術崗是要篩簡歷的(;д;),最終只會面幾個人....

        簡歷幸運的過了篩選,面試有2個面試官,都是來自xxxxx項目組,這裏就不多說面試過程了,面試中就被問到了熱更新,熱更新在面試中感覺是必問的,之前的面試也都有被問到過,所以來寫篇文章記錄一下(。・ω・。)

2.C#反射

       實現手遊熱更新的一個方案就是使用c#的反射機制,我所在的項目組目前代碼裏就是使用的反射來進行熱更新。

那麼,什麼是反射?

 簡單來說,反射就是是一種能夠動態加載和調用程序集(dll)中類方法屬性的機制。

     上面的解釋根據自己理解瞎編的,也不知道對不對,錯了的話歡迎指正。

      C#是一門編譯型語言,修改源代碼需要對代碼進行重新編譯,而手機不支持代碼編譯,需要在電腦上用編譯器進行編譯,所以導致了每修改一次代碼就得回爐編譯再發布新版本。使用反射後我們就只需要將當前版本的dll文件用新編譯好的dll文件替換掉,這樣就避免了代碼的重編譯而實現熱更新。

       不過c#反射只適用於Android熱更新,iOS因爲自身的安全機制,新申請的內存空間(用於修改後的代碼使用)不允許進行寫操作,所以目前c#的反射基本不被商業項目用作熱更新(除我們公司外(T▽T),ios只能老老實實提新包,感覺技術還停留在幾年前,無力吐槽...)。

      而目前使用的最多的用作熱更新的就是下面要介紹的Lua了。

3.Lua之xLua

      Lua是一門腳本語言,之所以使用lua作爲熱更新的首選方案就是因爲lua的解釋器能夠使繞過App Store的代碼審覈機制。爲了使lua更適合於熱更新,目前有幾個基於lua實現的腳本插件被普遍使用,比如toLua,xLua,sLua ...等等。

      這裏就簡單介紹一下xlua的使用

 xlua由騰訊在GitHub開源維護: https://github.com/Tencent/xLua

     之所以選擇學習xlua也是因爲目前騰訊的手遊基本使用xlua作熱更新,而作爲一名遊戲開發小白,自然對鵝廠有嚮往.....

     算了,xlua的熱更新使用示例和環境配置下次再寫(其實GitHub上的文檔寫的很清楚了),之前寫的lua代碼都在公司電腦上忘了上傳git,寢室電腦也沒備份,放假人懶也不想重新寫一遍代碼。。。。

    

      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章