admin 发表于 2021-5-17 12:10:43

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
?>



yangxudou 发表于 2022-3-3 18:42:58

谢谢大佬的辛勤努力,多谢分享。
页: [1]
查看完整版本: AssetBundle包与服务器全栈功能开发