HOTFIX_ENABLE
例1
xlua.hotfix(CS.CS_test,'Fun_pamaras',function(self,num)
print("lua带参数的方法",num)
end
)例2
local util = require 'util';
util.hotfix_ex(CS.CS_test,'Fun1',function(self)
self.Fun1(self)
UE.Debug.Log("04 追增的lua的方法")
UE.Debug.Log(UE.Mathf.Floor(UE.Random.Range(0,self.num_int_2)))
self.PRIVATE_FUN1(self) --lua调用静态的时候
CS.CS_test.fun_static_01(5,6)
end
)
1:调用私有方法的时候先声明
xlua.private_accessible(CS.CS_test)
2:在原方法上追增方法
local util = require 'util';
util.hotfix_ex(CS.CS_test,'Fun1',function(self)
3:例如GetCompontent<Text>("name1")在lua中因为不存在泛型概念所以直接写成GetCompontent('name1')
关于变量的作用域:
多个Lua文件中变量默认是可以共用的(变量前面默认有 _G. 表示全局 )
Lua脚本中的变量是申请在Lua解析器中的,多个Lua脚本的全局变量申请空间都是在Lua解析器中
local 关键字 加在变量申请之前 表示变量只在变量所在的代码块中可以访问
代码块:包裹在有end关键字结尾的代码内部的区间
注意:在代码块内部如果不加local 变量仍然是全局的。
001. dofile() 函数
在test2.lua中调用test1.lua dofile(test1.lua) //游戏中砍一刀,就调用一次dofile;不用停下来全部文件更新 (不会改变的逻辑代码用C来写,经常需要更新的用Lua脚本语言来写)
002. require("test1") 与dofile类似,区别是:require相当于加载,多次加载只有第一次会执行,类似有防止头文件重复包含;dofile相当于执行一次Lua脚本,多次调用都会生效
003 闭包,函数类型变量的定义
function func1()
local function func2() //闭包作用:定义类似private类型的变量,函数类比C++的类
print("func2 is called")
end
func2()
end
func1()
func2() //如果func2 前面不加local ,外部调用过func1之后,就可以调用func2了
004 Lua中的类 利用setmetatable实现
animal = {}
animal.foot_count = 4
dog = {}
duck = {}
setmetatable(dog,{__index = animal}) 相当于指定dog是animal的子类, __index是一个metatable中的变量 还有一个 __newindex可以用来改变父类的值。
setmetatable(duck,{__index = animal})
//当对duck 的 foot_count 进行赋值的时候,因为duck本身并没有这个foot_count 所以会在animal中寻找这个foot_count变量
duck.foot_count =2
此时dog.foot_count = 4
duck.foot_count =2
005 利用setmetatable实现俩table相加
point = {}
point.x = 1
point.y = 2
point1={}
point.x = 100
point.y = 200
mt = {__add = function(a,b) local t ={};t.x = a.x+b.x;t.y = a.y+b.y; return t ;end}
setmetatable(point ,mt) //为point添加+属性
point2 = point + point2 //类似C++的操作符重载,但是不同的是Lua不需要将+运算放到第一个操作数的成员函数中,而是任何一个操作数只要有一个有+运算就可以
006 setmetatable还有__eq __le等固定的元方法 可用于重载
setmetatable(point ,{__add =addfunc,__eq = isEqual}) //配合外部定义的addfunc isEqual函数完成重载运算
Lua luat 区别 luac和lua有什么区别
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
lua和bin有什么区别 lua和c的区别
lua和c有两种关系: 一种是在lua中调用C的函数,C称为库代码,一种是C中调用lua,C就称为应用程序代码,此时C中包含了lua的解释器 C代码部分 注意在C++中,通
lua和bin有什么区别 lua c/c++ 数据 Lua -
非root用户 ansible报错
无root权限部署LAMP环境  
非root用户 ansible报错 数据库 php 操作系统 mysql