cocos2dx lua 热更新

cocos2dx lua 热更新,第1张

概述最近研究cocos2dx + lua 实现游戏的热更新。基本原理:比如我有一个GameScene,显示"hello world",现在热更新,更新之后显示"hello SB".如果是用c++来开发,那么只用把它作成lib库,更新时替换lib库。用lua的话,更简单,替换相关的lua就可以了。 GameScene.lua [cpp]  view plain copy require "Cocos2d 最近研究cocos2dx + lua 实现游戏的热更新。基本原理:比如我有一个GameScene,显示"hello world",现在热更新,更新之后显示"hello SB".如果是用c++来开发,那么只用把它作成lib库,更新时替换lib库。用lua的话,更简单,替换相关的lua就可以了。 GameScene.lua [cpp] view plain copy require"Cocos2d" require"Cocos2dConstants" localGameScene=class("GameScene",function() returncc.Scene:create() end) functionGameScene.create() localscene=GameScene.new() scene:addChild(scene:createTitle()) returnscene end functionGameScene:ctor() self.visibleSize=cc.Director:getInstance():getVisibleSize() self.origin=cc.Director:getInstance():getVisibleOrigin() self.schedulerID=nil end functionGameScene:createTitle() localTitle=cc.Label:createWithTTF("HelloWorld","Fonts/arial.ttf",24) Title:setposition(self.visibleSize.wIDth/2,self.visibleSize.height/2) returnTitle end
更新的 GameScene.lua copy localTitle=cc.Label:createWithTTF("HelloSB",248)"> end 最关键的更新模块,MenuScene.lua copy localMenuScene=class("MenuScene",248)"> localTitle functionMenuScene.create() localscene=MenuScene. scene:addChild(scene:createLayer()) --scene:addChild(scene:createLayerFarm()) --scene:addChild(scene:createLayerMenu()) functionMenuScene:ctor() self.visibleSize=cc.Director:getInstance():getVisibleSize() self.origin=cc.Director:getInstance():getVisibleOrigin() self.schedulerID=nil functionMenuScene:createLayer() functionmenuCallback1(tag) localscene=require("GameScene") localgameScene=scene.create() cc.Director:getInstance():replaceScene(gameScene) functionmenuCallback2(tag) MenuScene:update() localmenulayer=cc.Layer:create() Title=cc.Label:createWithTTF("ChooseScene",24) Title:setposition(self.visibleSize.wIDth/2,self.visibleSize.height/4*3) menulayer:addChild(Title) localmenulabel1=cc.Label:createWithTTF("GotoScene",248)"> localmenuItem1=cc.MenuItemLabel:create(menulabel1) menuItem1:registerScriptTapHandler(menuCallback1) menuItem1:setposition(self.visibleSize.wIDth/2,self.visibleSize.height/4*2) localmenulabel2=cc.Label:createWithTTF("Update",248)"> localmenuItem2=cc.MenuItemLabel:create(menulabel2) menuItem2:registerScriptTapHandler(menuCallback2) menuItem2:setposition(self.visibleSize.wIDth/2,self.visibleSize.height/4*1) localMainMenu=cc.Menu:create() MainMenu:setposition(0,0) MainMenu:addChild(menuItem1) MainMenu:addChild(menuItem2) menulayer:addChild(MainMenu) returnmenulayer functionMenuScene:getAssetsManager() localfunctiononError(errorCode) iferrorCode==cc.ASSETSMANAGER_NO_NEW_VERSIONthen Title:setString("nonewversion") elseiferrorCode==cc.ASSETSMANAGER_NETWORKthen Title:setString("networkerror") localfunctiononProgress(percent) localprogress=string.format("downloading%d%%",percent) Title:setString(progress) localfunctiononSuccess() Title:setString("downloadingok") localpathToSave="" pathToSave=createDownloadDir() localassetsManager=cc.AssetsManager:new("http://qd.baIDupcs.com/file/1a531cc6565d95827e0ec3f9fd4af795?fID=138463011-250528-222085911919595&time=1406097600&sign=FDTAXER-DCb740ccc5511e5e8fedcff06b081203-mLvWIkhwaVZCjN%2BpTYZJZ%2BagPR4%3D&to=qb&fm=N,B,T,t&newver=1&expires=1406098200&rt=sh&r=164813188&mlogID=124796854&sh=1&vuk=138463011&vbdID=2986594979&fn=GameScene.zip", "https://raw.github.com/samuele3hu/AssetsManagerTest/master/version", pathToSave) assetsManager:retain() assetsManager:setDelegate(onError,cc.ASSETSMANAGER_PROTOCol_ERROR) assetsManager:setDelegate(onProgress,cc.ASSETSMANAGER_PROTOCol_PROGRESS) assetsManager:setDelegate(onSuccess,cc.ASSETSMANAGER_PROTOCol_SUCCESS) assetsManager:setConnectionTimeout(3) returnassetsManager functionMenuScene:update() MenuScene:getAssetsManager():update() returnMenuScene 关键看cc.AssertsMananger。cpp在extensions\assets-manager。 AssetsManager传三个参数,resource.zip路径,version路径,写文件的路径。 然后调用AssetsManager.update,进行下载更新。
注意的是,androID时,它是写到Context.getCacheDir()里。所以每次进入游戏时,都会重新更新。需要修改 createDownloadDir()里创建的路径,把它写到sd卡上。 总结

以上是内存溢出为你收集整理的cocos2dx lua 热更新全部内容,希望文章能够帮你解决cocos2dx lua 热更新所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1074963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存