Lua, Love2d, 两个同名 class 的游戏在不同的文件夹

Lua, Love2d, two games with the same class name in different folders

我是 Lua 和 Love2D 的新手,我做了 2-3 个简单的游戏,我想把它们放在一起。我做了一个 window,您可以在其中选择要玩的游戏。它成功了;有点问题。我的两个游戏使用球。所以两者都有一个 Ball.lua 文件。我使用 require 函数在我的每个游戏中加载 Ball 文件。一开始能用,我可以玩Game1,回去玩Game2没问题。但如果我回去想再次玩 Game1。他的 ball.lua 文件将不需要,因为只需要加载一次。然后会出现错误,因为我的 game1 正在尝试使用我的 Game2 的球 Class。

我想知道哪种解决方案最好:

  1. 只需重命名文件即可。 (我想避免它,对我来说很难编码)
  2. 使用doFile。 (没用过,不知道好不好用)
  3. 在我的主菜单中需要两个 Ball 的 Classes 并在加载每个游戏时通过参数传递它(不知道它是否也能工作)

如果您想查看我的代码以获得更多解释,这里是 link:https://github.com/cbelangerstpierre/Games/tree/main/Games

提前致谢!

如您所知,require 每个文件只会执行一次。但是,它还会保存文件的 return 值,因此您可以根据需要多次 require 文件并仍然获得相同的值。

在您的 Ball.lua 文件中,将您的 Ball 声明设为本地:

local Ball = Class{}

然后在这些文件的底部添加:

return Ball

然后,更改要存储到全局 Ball 变量的 main.lua 文件:

Ball = require "Atari-Breakout.Ball"

Ball = require("Switching-Ball.Ball")

理想情况下,建议将所有变量设为本地变量,并根据 require.

所需的文件制作 return 表