騰訊開源手游熱更新方案Xlua尝鮮(一)

1617 ワード

2017年の初めにテンセントはオープンソースの手游びの热い更新案XLuaを発表し、现行の大环境の下で相手游びを热く更新することが特に重要だった(広电とアップルの审査メカニズム)が、一部の手游びは开発の过程で热い更新の机能に触れていない.一部のプロジェクトはすでにC#で书き终わった.最初からアクセスしていても、両方の言語で同時に開発するのは難しいという問題があります.
審査制度の存在のため、熱は更に硬い需要で、すべて熱更案を支持しないのはすべてごろつきです!xLuaの最新のホットパッチ技術は比較的完璧に上記の問題を解決しました!xLuaホットパッチ技術は、オンラインでC#(方法、属性、イベントなど)実装をLua実装に置き換えることをサポートします.これはあなたができることを意味します:1、開発はC#だけを使います;2、运行もC#で、性能はluaを秒杀することができます;3、问题が発生した后にLuaでC#の问题の部位を変えて、交换して甚だしきに至ってはゲームを再开しないようにします;
極めて簡単な統合アクセス方式は、起動した場所にいくつかのコードを追加すればよい.
if (File.Exists("/path/to/hotfix.lua"))
{
        LuaEnv luaenv = new LuaEnv();
        luaenv.DoString(File.ReadAllText("/path/to/hotfix.lua"));
}
はい、あなたのアプリケーションにはホットパッチの能力があります.hotfixはありません.lua(名前をインストールして変更することができます)では、何もしないで、自然にオーバーヘッドがありません.ホットアップデートが必要なタイプに[Hotfix]のラベルを付ける必要があります.
置換クラスの関数(パッチ)はhotfixを何らかの方法でダウンロードした.lua,hotfix.luaは修復コードです.簡単な例を見てみましょう.
xlua.hotfix(CS.HotfixTest, 'Update', function()
  
        print('Update in lua')
  
end

上記コードはC#のHotfixTestクラス(MonoBehaviourに継承)のUpdate関数をluaの実装に置き換える.関連APIは1つです.
xlua.hotfix(class,[method_name], fix)

classはC#のクラス名、method_nameオプションで、書くと関数を置き換え、ないとクラスを置き換え、fixがmethod_を与えた場合nameは関数を提供し,与えずにtableで関数のセットを提供する.
ホットパッチでサポートされているC#プロパティには、プライベート/パブリック、静的/メンバー、オペレータリロード、汎化関数など、さまざまな関数があります.コンストラクション関数、コンストラクション関数、通常の関数とは異なり、コンストラクション関数とコンストラクション関数はlua関数で置き換えるのではなく、lua関数を実行した後も元の論理を実行します.プライベート/パブリック、静的/メンバー、汎化されたプロパティ.イベントのadd/remove.汎化タイプ.要するに、クラス静的構造関数は、現在唯一サポートされていないことが知られている.
次の記事:
騰訊開源手游熱更新方案Xlua尝鮮(二)——Lua文字列とLuaファイルロードを実行する