Loxodon.Framework.XLua 是一个XLua的开源的MVVM框架,它做为Unity3D的MVVM框架Loxodon.Framework的插件来使用。使用这个框架,可以做到完全使用Lua来编写游戏逻辑,并且遵循MVVM的开发习惯,支持数据绑定,有感兴趣的朋友可以去github下载。
下面是代码示例
- 数据绑定示例
require("framework.System")
local Context = CS.Loxodon.Framework.Contexts.Context
local LuaBindingServiceBundle = CS.Loxodon.Framework.Binding.LuaBindingServiceBundle
local ObservableObject = require("framework.ObservableObject")
local ObservableDictionary = require("framework.ObservableDictionary")
---
--创建一个Account子视图模型
--@module Account
local Account = class("Account",ObservableObject)
function Account:ctor(t)
--执行父类ObservableObject的构造函数,这个重要,否则无法监听数据改变
Account.super.ctor(self,t)
if not (t and type(t)=="table") then
self.id = 0
self.username = ""
self.Password = ""
self.email = ""
self.birthday = os.time({year =1970, month = 00, day =00, hour =00, min =00, sec = 00})
self.address = ""
end
end
---
--创建一个数据绑定示例的视图模型
--@module DatabindingViewModel
local DatabindingViewModel = class("DatabindingViewModel",ObservableObject)
function DatabindingViewModel:ctor(t)
--执行父类ObservableObject的构造函数,这个重要,否则无法监听数据改变
DatabindingViewModel.super.ctor(self,t)
if not (t and type(t)=="table") then
self.account = Account()
self.remember = false
self.username = ""
self.email = ""
self.errors = ObservableDictionary()
end
end
function DatabindingViewModel:submit()
if #self.username < 1 then
--注意C#字典类型的使用方式,通过set_Item或者get_Item 访问
self.errors:set_Item("errorMessage","Please enter a valid username.")
return
end
if #self.email < 1 then
--注意C#字典类型的使用方式,通过set_Item或者get_Item 访问
self.errors:set_Item("errorMessage","Please enter a valid email.")
return
end
self.errors:Clear()
self.account.username = self.username
self.account.email = self.email
self.account.remember = self.remember
end
---
--创建一个数据绑定视图,扩展DatabindingExample.cs 对象