<ul>
  • lua脚本以txt的形式存储在Resources 下面
  • 用LuaSvr svr svr.start调用到脚本
  • 用 svr.luaState.getFunction(“foo”).call 来调用到里面的方法
  • lua

    • Table – 是一个Key Value的数据结构
    • Lua内建约定
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    __add(a, b)                     对应表达式 a + b
    __sub(a, b) 对应表达式 a - b
    __mul(a, b) 对应表达式 a * b
    __div(a, b) 对应表达式 a / b
    __mod(a, b) 对应表达式 a % b
    __pow(a, b) 对应表达式 a ^ b
    __unm(a) 对应表达式 -a
    __concat(a, b) 对应表达式 a .. b
    __len(a) 对应表达式
    __eq(a, b) 对应表达式 a == b
    __lt(a, b) 对应表达式 a < b
    __le(a, b) 对应表达式 a <= b
    __index(a, b) 对应表达式 a.b
    __newindex(a, b, c) 对应表达式 a.b = c
    __call(a, ...) 对应表达式 a(...)
    • lua 面向对象
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Person={}

    function :new(p)
    local obj = p
    if (obj == nil) then
    obj = {name="ChenHao", age=37, handsome=true}
    end
    self.__index = self
    return setmetatable(obj, self)
    end

    function :toString()
    return self.name .." : ".. self.age .." : ".. (self.handsome and "handsome" or "ugly")
    end

    上面我们可以看到有一个new方法和一个toString的方法。其中:
    1self 就是 Person,Person:new(p),相当于Person.new(self, p)
    2new方法的self.__index = self 的意图是怕self被扩展后改写,所以,让其保持原样
    3)setmetatable这个函数返回的是第一个参数的值。
    于是:我们可以这样调用:
    复制代码 代码如下:

    me = Person:new()
    print(me:toString())

    kf = Person:new{name="King's fucking", age=70, handsome=false}
    print(kf:toString())
    • 使用外部lua文档
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    我们有一个hello.lua的文档:
    复制代码 代码如下:

    print("Hello, World!")
    如果我们:require(“hello”),那么就直接输出Hello, World!了。
    注意:
    1)require函数,载入同样的lua文档时,只有第一次的时候会去执行,后面的相同的都不执行了。
    2)如果你要让每一次文档都会执行的话,你可以使用dofile(“hello”)函数
    3)如果你要玩载入后不执行,等你需要的时候执行时,你可以使用 loadfile()函数,如下所示:
    复制代码 代码如下:

    local hello = loadfile("hello")
    ... ...
    ... ...
    hello()