text - 为什么我在 Love2D 游戏中的文字不会更新?
问题描述
我终于解决了我的游戏中没有显示文本的问题,现在下一个问题是它不会更新。应该发生的是,当我按向上和向下箭头键时,所选文本会改变,然后按 Enter 会使我进入新状态,或者退出游戏。
我StartState.lua
现在的代码如下所示:
StartState = Class{__includes = BaseState}
local option = 1
function StartState:update(dt)
if love.keyboard.wasPressed('up') then
if option == 1 then
option = 2
else
option = 1
end
elseif love.keyboard.wasPressed('down') then
if option == 2 then
option = 1
else
option = 2
end
end
if love.keyboard.wasPressed('enter') then
if option == 1 then
gStateMachine:change('play')
else
gStateMachine:change('quit')
end
end
end
function StartState:render()
local backgroundWidth = gTextures['start-background']:getWidth()
local backgroundHeight = gTextures['start-background']:getHeight()
love.graphics.draw(gTextures['start-background'], 0, 0, 0, VIRTUAL_WIDTH / (backgroundWidth - 1),
VIRTUAL_HEIGHT / (backgroundHeight - 1))
love.graphics.setFont(gFonts['large'])
love.graphics.setColor(153/255, 217/255, 234/255, 255/255)
love.graphics.printf('Attack Them All', 0, VIRTUAL_HEIGHT / 2 - 50, VIRTUAL_WIDTH, 'center')
love.graphics.setFont(gFonts['medium'])
love.graphics.setColor(0/255, 0/255, 0/255, 255/255)
love.graphics.printf('Play', 0, (VIRTUAL_HEIGHT / 2) + 2, VIRTUAL_WIDTH + 2, 'center')
love.graphics.printf('Quit', 0, (VIRTUAL_HEIGHT / 2) + 22, VIRTUAL_WIDTH + 2, 'center')
if option == 1 then
love.graphics.setColor(255/255, 174/255, 201/255, 255/255)
love.graphics.printf('Play', 0, (VIRTUAL_HEIGHT / 2), VIRTUAL_WIDTH, 'center')
love.graphics.setColor(237/255, 28/255, 36/255, 255/255)
love.graphics.printf('Quit', 0, (VIRTUAL_HEIGHT / 2) + 20, VIRTUAL_WIDTH, 'center')
else
love.graphics.setColor(237/255, 28/255, 36/255, 255/255)
love.graphics.printf('Play', 0, (VIRTUAL_HEIGHT / 2), VIRTUAL_WIDTH, 'center')
love.graphics.setColor(255/255, 174/255, 201/255, 255/255)
love.graphics.printf('Quit', 0, (VIRTUAL_HEIGHT / 2) + 20, VIRTUAL_WIDTH, 'center')
end
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
end
我已经StateMachine
在我的main.lua
文件中添加了一个:
function love.load()
love.graphics.setDefaultFilter('nearest', 'nearest')
math.randomseed(os.time())
love.window.setTitle('Attack Them All')
push:setupScreen(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, WINDOW_WIDTH, WINDOW_HEIGHT, {
vsync = true,
fullscreen = false,
resizable = true
})
gStateMachine = StateMachine {
['start'] = function() return StartState() end,
['play'] = function() return PlayState() end,
['quit'] = function() return QuitState() end
}
gStateMachine:change('start')
end
function love.update(dt)
gStateMachine:update(dt)
end
我在这里做错了什么?
解决方案
love.keyboard.wasPressed 不是标准的 Love2D API。应该在代码中的其他地方实现吗?首先检查这个。然后尝试print("condition xxx is verified")
在你的条件中放置一些你的代码应该被执行的地方,然后你会发现条件没有被验证的地方。
例子:
if love.keyboard.wasPressed('up') then
print("up is pressed")
...
推荐阅读
- c# - 如何声明没有参数的progressIndicator?
- sql - 我需要 sql 查询中正则表达式函数的帮助
- opencv - 在 tkinter 中自动更新标签
- c# - Json反序列化,反序列化时无法将int解析成字符串。尝试使用自定义转换器类解决此问题
- javascript - 如何在 React Native 中更改底部选项卡导航器的高度
- visual-studio-2017 - Visual Studio 2017 - 如何使用外部工具运行应用程序
- python - 函数无意中修改了外部变量
- flutter - 参数类型“日期时间”不能分配给参数类型“时间戳”
- c++ - 在 C++ 中填充 uint16_t 的二维 std::array
- javascript - [Vue 警告]:未知的自定义元素:
,可能是模块冲突?