在libGDX中如何调用render()方法?

我知道libGDX中的项目生成器在我的Game项目中find了render(deltatime)方法,并将其制作成一个游戏循环,以便每秒平均重复60次。 但是我想知道项目生成器如何findrender()方法。

让我举一个例子:

在我的游戏中,在Main类中,我使用它的构造函数在Main类的create()中声明了具有自己的render()方法的SecondClass。 然后,我没有MainClass中的任何render()方法。 当我这样做时,SecondClass中的render()工作。 但是,当我在MainClass中创建render()方法时,MainClass中的render()工作,而不是SecondClass中的render()方法。 这是否意味着项目生成器访问了第一个可以看作GameLoop的render()

项目生成器在这里没有做任何工作,这一切都是由源代码处理,使用dynamic调度(虚函数)和基本的编程逻辑。 阅读源代码是了解如何工作的好方法。

在libGDX中inheritance的Game基类本身就是ApplicationListener一个实现,它规定了render()函数。

Game类通过检查游戏是否有屏幕来实现render() ,如果是,则调用该屏幕的render()方法 。

如果您从Gameinheritance并提供render() ,那么您将覆盖Game类的render方法,而您将被调用。 如果不重写render ,则会调用Game类的方法,然后沿着调用转发到任何活动屏幕对象的render方法。

这就是dynamic调度 /虚函数在Java中的工作原理。 没有任何项目生成器正在执行这个任务,所以对源代码没有任何神奇的检查。

生成器仅用于生成一组文件,它们将正确的点代替类和包名称到源代码中,以确保创建类的实例。 这与这个操作没有太大的关系,完全没有必要。 如果你愿意的话,你可以很容易地编写自引导代码。