日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

手游为什么要热更新,C#为什么不能热更新,LUA为什么可以

發布時間:2025/3/18 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手游为什么要热更新,C#为什么不能热更新,LUA为什么可以 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

手游為什么要熱更新,C#為什么不能熱更新,LUA為什么可以

熱更新是什么?簡單的說就是打補丁,只補需要部分,不用重個游戲包重打上傳

熱更新問題的本質是代碼更新而不是資源更新,為什么呢?

大型手游都是將補丁資源放在專門的WEB服務器上,游戲啟動時動態下載并放入到游戲的持久化目錄中,這對安卓和蘋果都可以

但是代碼就特殊了:

1,由于不同類型的語言有不同的運行機制,編譯型語言如C#,是先編譯成一整塊中間碼然后在不同平臺上被.NET運行時解釋執行,這就是說使用C#編寫的APK或IPA安裝到手機上后是沒有任何C#文件的。這樣就算運行時將作為補丁的C#文件從WEB服務器上下載到持久化目錄也運行不了。但有個辦法是反射,見后而。

一,手游戲 為什么需要熱更新?

1,手游是快節奏的應用,功能和資源更新頻繁,特別是重度手游安裝包常常接近1個G,如果不熱更新,哪怕改動一行代碼也要重新打個包上傳到網上讓玩家下載。

2,對于IOS版本的手游包IPA,要上傳到蘋果商店進行審核,周期漫長,這對于BUG修復類操作是個災難。

基于以上兩點,熱更新就很重要了,快速,小巧,路過蘋果審核。

二,C#為什么不能熱更新

準確的說,C#在安卓上可以實現熱更新,但在蘋果上卻不能。

在安卓上可以通過C#的語言特性-反射機制實現動態代碼加載從而實現熱更新。

具體做法是:將需要頻繁更改的邏輯部分獨立出來做成DLL,在主模塊調用這些DLL,主模塊代碼是不修改的,只有作為業務(邏輯)模塊的DLL部分需要修改。游戲運行時通過反射機制加載這些DLL就實現了熱更新。

但蘋果對反射機制有限制,不能實現這樣的熱更。為什么限制反射機制?安全起見,不能給程序太強的能力,因為反制機制實在太過強大,會給系統帶來安全隱患。

三,LUA為什么可以熱更

LUA解釋型語言,并不需要事先編譯成塊,而是運行時動態解釋執行的。那C#為什么不做成解釋型語言呢?因為C#的定位是一個追求效率且功能強大的編譯型語言。這樣LUA就和普通的游戲資源如圖片,文本沒有區別,因此可以在運行時直接從WEB服務器上下載到持久化目錄并被其它LUA文件調用。

posted on 2018-03-25 22:21 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏

總結

以上是生活随笔為你收集整理的手游为什么要热更新,C#为什么不能热更新,LUA为什么可以的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。