前台小姐姐10分钟就能掌握的Defold游戏引擎需要的lua入门知识

想在工作之外找点事情做,多方对比之后,决定开发小游戏。对比了几款游戏引擎,最终选中的Defold,主要看它免费而且能发布到多个平台,也有丰富的插件支持。由于它的开发语言是lua,所以本文记录一下Defold中需要的Lua知识,以实用为主,大约10分钟就完全学会。

主要从几个方面入手:

  1. 数据类型
  2. 作用域
  3. 控制逻辑与循环
  4. 模块化
数据类型

lua支持的数据类型包含string number boolean function table 等,还有thread userdata等不常用,先不管,先入门再说,后面用到了再学。

lua 复制代码
-- 数据类型: string number boolean function table table
print(type("Hello Lua")) -- string
print(type(type)) -- function
print(type(nil)) -- nil
print(type({name="zhangsan"})) -- table
print(type({"name", "age"})) -- table

上面的数据类型中,要比较注意nil ,表示null。table 这是一个非常要注意的数据类型,能当成数组使用,也能当成key-value键值对使用,但是通过type函数,它们的类型都是table类型。

作用域

lua变量作用域分为局部变量与全局变量,要注意function也是可以算是一种特殊的变量,也具有局部变量与全局变量。

lua 复制代码
-- 变量
local name = "zhangsan" -- 局部变量
age = 10 -- 全局变量

local function say_hello()
    print("hello lua")
    print(age)
    local local_v = 100 -- 局部变量
end

say_hello()
print(local_v) -- nil

在申明局部函数时,一定要调用的函数之前申请局部函数。

lua 复制代码
-- 函数
-- 局部作用域函数
local function fun1(name)
    return "Hello "..name
end
function main_fun()
    print(fun1("gvim lua"))
end
main_fun()
控制逻辑与循环

所谓的控制逻辑与循环,就是按条件判断或循环处理。

lua 复制代码
-- 控制逻辑
local a = 10
local b = 12
local c = 3
if a < b and c < b then 
    print(true)
end

-- 循环,从1循环到10,每次步长2
for d=1, 10, 2 do
    print(d)
end
-- 循环table键值对
local person = { name="zhangsan", age=100, address="beijing" }
for k, v in pairs(person) do
    print(k, v)
end
-- 循环table数组
local languages = {"java", "javascript", "lua"}
for i, v in pairs(languages) do
    print(v)
end
模块化

在Defold中尽管已经把lua脚本进行了很好的组织,但是也会有一些公用的代码可以抽取出来,那么,就可以把公共的代码抽取为一个模块。按以下示例,申明MyModule模块,定义文件MyModule.lua如下:

lua 复制代码
-- 模块
-- 定义MyModule模块
MyModule = {}
MyModele.CONSTANT_VAR = 123

function MyModule.fun1()
    print("MyModule.fun1")
end

-- 模块中的私有化方法,在模块外部是不能调用的
local function MyModule.private_fun2()
    print("this is a private function")
end

return MyModule

在另一个lua文件中,可以引用定义的模块,如下文件demo.lua所示:

lua 复制代码
-- 引用Module模块
require("MyModule")
MyModule.fun1()

以上的示例中,demo.lua与MyModule.lua文件在相同目录下。

在掌握以上基础知识之后,基本上lua本身的知识就已够用了,其他就是去学习defold引擎中lua的各项API了。

相关推荐
郝学胜-神的一滴1 天前
游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱
开发语言·计算机网络·程序人生·游戏·游戏引擎
全速向光1 天前
盖世游戏PC模拟器:手机也能畅玩电脑平台游戏
游戏·智能手机
Minecraft红客1 天前
以撒的结合
python·游戏·电脑·娱乐
the3clipse2 天前
视频编码技术如何赋能游戏性能优化:从硬件隔离到AI驱动的带宽革命
游戏·性能优化·音视频·视频编码·硬件加速·ai编码·自适应编码
jeffsonfu2 天前
生成对抗网络(GAN)原理:生成器与判别器的“猫鼠游戏”
人工智能·游戏·生成对抗网络
解决小子2 天前
【游戏作品设计解析】类魂游戏设计解析
游戏·业界资讯·游戏策划·游戏设计
k4m7v2pz3 天前
用中文编程语言写游戏:玄铁语言生命游戏的 macOS 适配实录
游戏·macos·玄铁·生命游戏·中文编程语言·玄铁中文编程
JQweryuiop9 天前
中小型游戏陪练工作室数字化管理实践:基于七彩屋电竞护航小程序订单、履约与绩效系统的落地复盘
大数据·游戏·小程序·架构
乌萨达10 天前
低配电脑玩手游怎么设置?4GB、8GB内存与模拟器选择指南
游戏·电脑·安卓模拟器·雷电模拟器
林川~0111 天前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具