项目记录36--tolua 框架真机成功热跟新搞定 + 简单池子PrefabsPool.lua
来源:互联网 发布:js小球碰撞 编辑:程序博客网 时间:2024/05/16 18:59
今天终于把框架的所有调通了,build android也成功了,资源热跟新测试也成功,也就是手机不需要连接电脑自己修改UI,lua脚本逻辑真机直接就能看到作用的效果,太高兴了。总结下思路吧,有点犯困的节奏。
1.首先你要做资源的跟新和版本的控制就必须使用一个外网,但是穷啊用不起外网,哈哈,就在本地模拟一个咯效果一一样。我使用的是MAMPPRO这个软件使用非常简单,就是设置映射的IP,把需要更新的资源放到MAMPPRO的规定目录下面就OK了。
2.再者就是需要做版本控制,这个没什么好说的,难也不难就是比较烦硕细节很多。总的来说就是写个小工具对比你规定目录下的资源生成MD5,下载的URL等版本信息写到文件里面,服务器一份,客户端一份进行对比下载需要跟新的资源。这部分需要重构今天修改比较多。
3.服务端,我这使用时自己写的erlang服务器,就不多说,没怎么用上只是提供一个连接。
4.就是lua脚本的热跟新。之前我考虑的是直接把lua脚本打包成AB,在游戏下载完成资源后把打包的luaAB使用luaManager里面的luaState全部加载,在window下成功了,发现在android真机下有问题就是不能使用require了在真机模式下(不知道如何解决)一直报错使用require的module no found,细想了一下使用DoString进来require的脚本找不不到。最后改了直接dofile全部脚本,把lua脚本不打包AB直接丢在服务端单纯把它当做资源来下载这个就类似之前做quick-coco的版本跟新了。 _luaState.AddSerchPath(Application.peristertDataPath + "/Lua").下载跟新的脚本都放到这个目录下面,通过MD5覆盖。
--[[
* 创建人 : 星华
]]
PrefabsPool = class("PrefabsPool")
local _Instance = nil --单例
--ctor
function PrefabsPool:ctor( )
self.allPrefabs = {}
end
--单例
function PrefabsPool:Instance( )
if _Instance == nil then
_Instance = self.new()
end
return _Instance
end
--[[
Prfabs : 对象
isForever : 是否一直存在,在转换场景的时候删除false的
]]
function PrefabsPool:AddAsset(Prefab , isForever)
if Prefab.name == nil then
error("PrefabsPool --- Prefab.name == nil")
return false
end
--查看是否已经存在
local tempPretable = self.allPrefabs[Prefab.name]
if tempPretable ~= nil then
print(Prefab.name)
print("Prfabs has in !!")
return false
end
--结构
self.allPrefabs[Prefab.name]= {
obj = Prefab,
forever = isForever
}
return true
end
function PrefabsPool:GetAsset( ObjName )
local tempt = self.allPrefabs[ObjName]
if tempt == nil or tempt["obj"] == nil then
print("errro --->PrefabsPool:GetAssetObj : "..ObjName.."== nil ")
return nil
end
return tempt["obj"]
end
function PrefabsPool:Clear( )
self:RemoveScenePre()
end
--删除场景prefabs也就是isForever = nil的
--原本想着就是转场景时候清空
function PrefabsPool:RemoveScenePre( )
local keys = table.keys(self.allPrefabs)
for i=1,#keys do
local tempTb = self.allPrefabs[keys[i]]
if tempTb ~= nil and tempTb["forever"] == nil then
self.allPrefabs[keys[i]].obj = nil
self.allPrefabs[keys[i]] = nil
end
end
--释放内存
UnityEngine.Resources.UnloadUnusedAssets()
end
return PrefabsPool
困了......明天再来......
- 项目记录36--tolua 框架真机成功热跟新搞定 + 简单池子PrefabsPool.lua
- 项目记录22-- tolua基于lua框架事件派发
- 项目记录24--unity-tolua框架 View01---UIBase.lua
- 项目记录25--unity-tolua框架 View02---BasePanel.lua
- 项目记录26--unity-tolua框架 View03-UIManager.lua
- 项目记录28--unity-tolua框架 lua使用协程
- 项目记录29--unity-tolua框架 c#导出定时器lua
- 项目记录23--unity-tolua框架MediatorManager
- 项目记录32--tolua build android错误tolua.lua no found
- 项目记录27--unity-tolua框架 网络端+protobuf
- 项目记录30--unity-tolua框架 回顾之前Dotween导入
- 项目记录34--tolua 框架 场景管理BaseScene
- 项目记录35--tolua 框架 场景管理SceneManager
- tolua 框架 c# 调用 lua 过程 笔记
- [Unity热更新]tolua# & LuaFramework(五):.proto转换为.lua
- [Unity热更新]tolua# & LuaFramework(七):lua使用DOTween
- 池子项目上线总结
- 【Lua】tolua
- 简单的使用滚动视图的setContentOffSet和setContentSize以及几种简单的动画使用
- java自动装箱和拆箱机制详解
- pthread编译与sudo
- android实践项目三玩转listview
- C++作业3
- 项目记录36--tolua 框架真机成功热跟新搞定 + 简单池子PrefabsPool.lua
- ubuntu更改默认启动项顺序
- DVBS/S2在数字电视系统中的应用 五 (Single Cable介绍)
- Java异常处理throws,throw关键字try,catch,finally模块
- 使用VS自带命令行工具由.dll生成.lib
- jquery.min.js需不需要引入
- erer
- c++作业-3
- Horner规则求解多项式的值