【Love2d从青铜到王者】第九篇:Love2d之库(library)

news/2024/5/18 14:17:44 标签: 游戏引擎, 游戏程序, visual studio code

在这里插入图片描述

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 🍇一、库(Libraries )
      • 1️⃣.库(Libraries )
  • 🍈二、标准库(Standard libraries)
      • 1️⃣.标准库(Standard libraries)
  • 🍉三、总结
  • 🍋总结


前言

在这里插入图片描述


🍇一、库(Libraries )

1️⃣.库(Libraries )

  • 库是每个人都可以用来为他们的项目添加特定功能的代码。
  • 让我们试试Library。我们将使用rxitick。你可以在github上找到这个库在tick库

在这里插入图片描述

  • 点击点击tick.lua然后是原始的tick.lua代码。

在这里插入图片描述

  • 转到文本编辑器,创建一个名为tick.lua然后粘贴代码。

  • 现在我们必须遵循github页面上的说明。首先我们要load中用到require

function love.load()
    tick = require "tick"
end
  • 注意如何require没有parantheses(),就是括号的意思。这是因为当你只传递1个参数时,你不必使用它们。现在,我建议您仍然将它们用于任何其他功能,但是require遗漏它们是很常见的。但是到最后,都无所谓了。
  • 接下来我们必须把tick.update(dt)在我们的更新程序中。
function love.update(dt)
    tick.update(dt)
end
  • 现在我们准备开始使用这个库了。让我们这样做,以便在2秒钟后绘制一个矩形。
function love.load()
    tick = require "tick"

    --Create a boolean
    drawRectangle = false

    --The first argument is a function
    --The second argument is the time it takes to call the function
    tick.delay(
        function ()
        drawRectangle = true
        end
        ,   2)
end
function love.update(dt)
    tick.update(dt)
end
function love.draw()
    --if drawRectangle is true then draw a rectangle
    if drawRectangle
    then
        love.graphics.rectangle("fill", 100, 100, 300, 200)
    end
end

在这里插入图片描述

  • 我们刚刚传递了一个函数作为参数吗?当然,为什么不呢?函数毕竟是变量的一种。
  • 当你运行这个游戏时,你可以看到,有了这个库,我们可以延迟调用函数。就像这样,有大量具有各种功能的库。
  • 不要因为使用Library而感到内疚。为什么要重新发明轮子?也就是说,除非你有兴趣学习它。我个人在我的项目中使用了大约10个库。它们提供的功能我自己都不懂怎么做,我也根本没兴趣学。
  • Library不是魔法。这些都是你我都可以编写的Lua代码(如果我们有这方面的知识的话)。我们将在下一章创建一个库,这样我们就能更好地理解它们是如何工作的。

🍈二、标准库(Standard libraries)

1️⃣.标准库(Standard libraries)

  • Lua有内置的库。这些被称为标准库。它们是Lua内置的函数。print是标准库的一部分。也是table.inserttable.removeLua官网
    在这里插入图片描述

  • 我们还没有看到的一个重要的标准库是math library。它提供了数学函数,这在制作游戏时非常有用。Lua最新版5.4标准库
    在这里插入图片描述

  • 举个例子,math.random给了我们一个随机数。让我们用它来放置一个矩形在一个随机的位置,每当你按空格键。

function love.load()
    x = 30
    y = 50
end

function love.update(dt)
end

function love.draw()
    love.graphics.rectangle("line", x, y, 100, 100)
end

function love.keypressed(key)
    --If space is pressed then..
    if key == "space" 
    then
        --x and y become a random number between 100 and 500
        x = math.random(100, 500)
        y = math.random(100, 500)
    end
end

在这里插入图片描述

  • 现在我们了解了什么是库,我们可以开始使用类库了。

🍉三、总结

  • 库是赋予我们功能的代码。任何人都可以建一个libraryLua也有内置的库,我们称之为标准库。

🍋总结

以上就是今天要讲的内容,本文仅仅简单介绍了Love2d之库(library),介绍了lua库的如何使用,与博主的lua语言文章结合更好的理解love2d的编码,如果你是一名独立游戏开发者,或者一位对游戏开发有着深厚兴趣,但是又对于unity3d,ue4等这些对于新手而言不太友好的引擎而头疼的开发者;那么现在,你可以试试Love2D。Love2D是一款基于Lua编写的轻量级游戏框架,尽管官方称呼其为引擎,但实际上它只能称得上是一个框架,因为他并没有一套全面完整的解决方案。不过,这款框架上手及其容易,是学习游戏开发的初学者入门的一个良好选择。

在这里插入图片描述


http://www.niftyadmin.cn/n/1739747.html

相关文章

【Love2d从青铜到王者】第十篇:Love2d之类和类的继承(Classes And Inheritance)

系列文章目录 文章目录系列文章目录前言🍇一、类(Classes)1️⃣.类(Classes)🍈二、继承(inheritance)1️⃣.继承(inheritance)🍊三、代码详细解读🍋四、疑惑🍉五、总结&a…

【Love2d从青铜到王者】第十一篇:Love2d之图像(Images)

系列文章目录 文章目录系列文章目录前言🍇一、图像(Images)1️⃣.图像(Images)🍈二、draw()参数1️⃣.draw()参数2️⃣.图像(image)3️⃣.x轴和y轴4️⃣.旋转角度rotate5️⃣.x-scale方向大小 and y-scale方…

【Love2d从青铜到王者】第十二篇:Love2d之碰撞检测(Detecting collision)

系列文章目录 文章目录系列文章目录前言🍇一、图像(Images)1️⃣.图像(Images)🍈二、总结🍋总结前言 🍇一、图像(Images) 1️⃣.图像(Images&…

【Love2d从青铜到王者】第十三篇:Love2d之游戏:射击敌人(Game: Shoot the enemy)

系列文章目录 文章目录系列文章目录前言🍇一、游戏:射击敌人(Game: Shoot the enemy)🍈二、任务:创建一个移动的熊猫(Task: Create a moving panda)🍑三、任务:创造一个移动的蛇(Tas…

【Love2d从青铜到王者】第十四篇:Love2d之分享你的游戏(Distributing your game)

系列文章目录 文章目录系列文章目录前言🍇一、分享你的游戏(Distributing your game)🍊二、castle🍌三、总结🍋总结前言 🍇一、分享你的游戏(Distributing your game) 我…

【Love2d从青铜到王者】第十五篇:Love2d之角度和距离(Angles and distance)

系列文章目录 文章目录系列文章目录前言🍇一、角度(Angle)🍊二、正弦和余弦(Sine and cosine)🍑三、距离(Distance)🍈四、图像(Image)…

Lua热补丁方案(HotFix)

文章目录一、lua基础之热更新二、hotfix 实现了Lua热更新,仅对函数作替换,保留旧数据三、热更新介绍1.原理2.要点分析3.Lua热更新的实现4._ENV 环境变量5.上值 upvalue6.热更新函数Lua的require函数7.热更新函数Lua的setenv函数8.热更新函数Lua的debug库…

【Love2d从青铜到王者】第十六篇:Love2d之动画(Animation)

系列文章目录 文章目录系列文章目录前言🍇一、Love2d动画(Animation)1️⃣.框架2️⃣.四角型(Quads)3️⃣.多行(Multiple rows)4️⃣.出血的(Bleeding)5️⃣.总结&#x…