AssetBundle包与服务器全栈功能开发
什么是AssetBundle?引用Unity概念 AssetBundle是一个数据包 他可以使脚本 也可以使图片等任何数据
利用AssetBundle 我们可以在服务端开发客户端功能 而无需修改客户端
如何开发使用?
1 我们定义使用<? ?> 包含服务端代码
2 使用后 我们可以在服务端混写客户端与服务端代码 无需在客户端ldb中写代码
3 定义以下函数
[*]Client.RunScript( player, script)立刻执行向客户端发送执行脚本命令
[*]Client.WaitABRunScript( player,script) 向客户端发送执行脚本命令 该脚本将在所有ab包加载完毕之后执行
[*]Client.RunABundle ( player,filename ) 执行一个ab包 本函数会在所有ab包加载完毕之后执行
示例脚本:
以下脚本保存为 test.lua
并在config.lua中 LoadABundle("test.lua");
游戏中使用 /0 即可演示
function Myrw_init(view)
if view.IsInit then
view.add(new.bmpbutton("await.change","chajian_btn.bmp"));
return;
end
-- 异步回调方式调用服务端函数
local object = view.find("await.change");
object.enable = 1;
object.xpos = 130;
object.ypos = 60;
object.event = function(object,event)
if event == Cevent.click then
<?
function unsafe.sayhello(player,tbl)
NLG.SystemMessage(player,tostring(tbl))
end
?>
unsafe.sayhello({"早安,熊弟弟"})
<?
function unsafe.changeMetamo(player,tbl)
local metamoid = tonumber(tbl)
Char.SetData(player,%对象_形象%,metamoid);
Char.SetData(player,%对象_原形%,metamoid);
Char.SetData(player,%对象_原始图档%,metamoid);
NLG.UpChar(player);
return {'已经变身成['..metamoid.."] 真漂亮,快给大家看看吧!!"}
end
?>
local ret = unsafe.changeMetamo({104870});
Cli.SysMessage(tostring(ret),4,3);
end
end
end
<?
function Client.ShowView(player,id,func)
Client.WaitABRunScript(player,"new.ShowView("..id..","..func..")");
end
function Event.RegTalkEvent.Test(player,msg,color,font)
if msg == '/0' then
Client.RunABundle(player,'test.lua')
Client.ShowView(player,501,"Myrw_init")
end
end
?>
谢谢大佬的辛勤努力,多谢分享。
页:
[1]