我正在使用JRuby编写游戏引擎,当我使用全局变量时会出现问题。我只有这些脚本:
main.rb的:
$CLASSPATH << "src.rb"
require 'modules'
require 'SceneMenu'
require 'SceneMap'
$game.setScene(SceneMenu.new)
modules.rb:
$game = Java::MyNamespace::Game::getInstance
module MyGame
def self.cache
return $game.cache # << ERROR OCCURS HERE
end
end
SceneMenu.rb:
class SceneMenu
def initialize
@count = 0
end
def update
if @count == 100
$game.setScene(SceneMap.new)
end
@count += 1
end
end
SceneMap.rb:
class SceneMap
def initialize
@logoTexture = MyGame::cache.load("mylogo.png")
end
end
我的问题是,当我启动游戏时,它总是很好,但当我的@count
达到100,并且SceneMap
被创建时,会出现错误:
undefined method 'cache' for nil:NilClass
虽然我刚刚拨打$game.setScene( ... )
。
我根本不修改我的$game
变量,所以我不知道会发生什么。
有人知道发生了什么事吗?
答案 0 :(得分:0)
也许尝试将代码更改为:
$game = Java::MyNamespace::Game::getInstance
module MyGame
def cache
return $game.cache
end
end
答案 1 :(得分:0)
我终于通过写:
解决了我的问题module MyGame
def self.game
return Java::MyNamespace::Game::getInstance
end
end
$game = MyGame::game