Zitat Zitat
Meine Frage also: kann ich irgendwie mir ausgeben lassen, WO eine Funktion aufgerufen wurde? Ähnlich wie der Trace einer Fehlermeldung? So dass ich rausfunden kann, an welcher stelle das initialize unendlich aufgerufen wird?
Das weiß ich leider nicht, aber:

die endlosschleife wird durch den alias befehl verursacht (bzw eigentlich durch die initialize methode).
das liegt daran, dass nur der für dich zugeängliche rgss-teil beim soft-reset neu geladen wird.
die alte RPG::Sprite klasse wird somit nicht neu geladen, weshalb der alias befehl dafür sorgt, dass old_init auf deine initialize methode statt der originalen verweist.
deshalb sind old_init und initialize nach dem soft-reset dieselbe methode und du landest in einer rekursiven endlos-schleife, sobald du initialize aufrufst (bzw ein objekt erzeugst)

eine möglichkeit das zu umgehen wäre:

Code:
class RPG::Sprite
  if defined?(old_init).nil?#wenn old_init noch nicht definiert wurde
    alias old_init initialize
  end
    def initialize(viewport = nil)
      p self #(debug)
      old_init (viewport)
      @_state_duration = 0
      @_state_plus = []
      @_state_minus = []
      @_state_sprites = []
      @_state_icons = []
    end
...
end