ToLua-代码有修改

1:文件夹分析
Editor:lua用到的工具


Lua:lua所要用到的脚本全放这


Plugins:解析lua用到的库


Source:绑定的C#脚本 自动生成的wrap文件 将c#注册进lua

Tolua:tolua和c#交互的核心代码 全局绑定的方式


2:CoustomSetting.cs
如果要注册C#类脚本到lua
public static BindType[] customtypeList中注册


3:Lua : 下载插件BabeLua可支持C#写lua
Generate All 表示将CustomSetting里面注册的C#脚本生成wrap文件
在Source/Generate文件夹下
用SVN的时候 Source文件下的wrap文件不能上传




a:lua调用C#
cubeObj=UnityEngine.GameObject.FindGameObjectWithTag("Player")
cubeObj.name="123"

静态方法和变量用点号(.)调用
对象方法用冒号(:)调用




Lua里面不能有泛型:
用gameObject.AddComponent(type(类名))替换gameObject.AddComponment<类名>();




4:实现Update、LateUpdate、FixedUpdate方法
相关脚本LuaLooper.cs event.lua
listener=UpdateBeat:CreateListener(FuncName) --FuncName仅仅是名字
UpdateBeat:AddListener(listener)
UpdateBeat:RemoveListener(listener)


关于框架:


-=-游戏采用PureMVC框架-=-
通过Main.cs的Startup()函数启动游戏
在Startup()函数中启动框架:AppFacade.Instance.Startup(gameObject);
在根据注册的命令调用SplasCommand(闪屏)、PreloadCommand(预加载挂载一些工具脚本如GameManager、Luamanager等)、
StartupCommand(开始游戏命令初始化资源、lua、网络)该命令在GameManager中检测更新完版本之后运行
StartupCommand中得到LuaManager的引用其中有Initialize()函数加载lua虚拟机执行lua的main.lua脚本(该脚本是lua的入口)





1:建立好MVC类之后打开某个页面使用modulemanager.open(modulename.#)
MVC执行顺序Model.start()->Controller.start()->View.start()


2:要设置UI VIew层的显示关闭弹窗规则在moduleinit.lua中设置(窗体属性)


3:弹窗 equippopup.show装备 dewsspopup.show时装 pkmiteminfo.show携带品 itempopup.show 道具


4:labelpopup popupmanager 弹字体、弹窗口的显示


5:添加滑动监听 麻烦的一批。。。
base.ui.layout = base:findcom("CENTER/backpack/scrollview/Viewport/rect", "UILayout")
base.ui.layout.ItemRenderer = Asset:LoadAsset(asseturi.getassetpath(base.module, "BagPageRender"))
base.ui.layout.onCreate = bagview.createrender
base.ui.layout.onUpdate = bagview.updaterender 注册事件

UIScrollPage用于页面动态更新 即以页为单位 如果不加这个则以一个物体为单位动态更新

主要是UILayoutXXXXX.cs脚本控制整个流程
初始化:     if base.ui.layout.DataCount == 0 then
        base.ui.layout.DataCount = 4 --几个页面
        base.ui.layout:InvalidateData() --初始化数据位置
        base.ui.autoCenter.currentPage = 1 --当前页
        --OnAutoCenterEnd(1)
             else
        base.ui.layout.DataCount = 4
        base.ui.layout:Refresh() --刷新
         end


6:添加事件的方法
1、局部事件监听:base.view||model||ctrl.addListener("EventName"),CallBackFunc)
派发:base.brocast("EventName")
2、按钮事件 a、在view中base.attachclick(gameObject,"EventName") 事件在ctrl中注册
  b、utils.addclickevent(go,func,args)
3、全局事件监听:Event.AddListener("EventName",CallBackFunc)
派发:Event.Brocast("EventName",args)


7:资源加载
Asset:LoadAsset(asseturi.getXXXpath(xx,name,extension)
MVC中加载视图:
用modulemanager.open(name,args)加载一个视图,其中会检测moduleinit.lua中的设置
然后经过一些判断处理并且初始化module即自己写的init(其中调用父类的initmvc初始化MVC)函数,
最后得到需要加载的module,调用用module:open(setting.layer,args,setting.ispopup)函数
在module.open中self.view.open(ispopup)加载prefab并根据窗体属性对应行为。
首先需要将MVC用module绑定、初始化,




8:配置表
配置表放在database文件下 在需要用到的地方用datamanager.getdatabase(name)
iparis和pairs的区别在于:
ipairs从下表1开始遍历,并以此加1 如果得到nil值则退出遍历 --一般用于遍历数组
pairs遍历所有的key和value --一般用于遍历自定义表




9:网络
注册和请求一般在model中实现
network.addlistener("EventName" , CallBackFunc)
network.request("EventName")  请求完之后执行回掉函数CallBackFunc

在view中做某些需要请求的事情时派发ctrl中注册的事件

在controller中执行request方法


10:窗口隐藏显示

base:hide()方法可设置窗口隐藏
隐藏后再次显示会再调用commit函数,但在第一次显示时会调用start再调用commit
所以可将更新数据放在commit函数中 该函数只会在设置数据的时候调用



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值