跳到主要内容

MainLoop

继承

Object

简要描述

游戏主循环的抽象基类。

描述

MainLoop是IdeaXR项目的游戏循环的抽象基类。

在应用程序启动时,必须将MainLoop实现提供给OS。

这是实现简单的MainLoop的示例脚本:

extends MainLoop

var time_elapsed = 0
var keys_typed = []
var quit = false

func _initialize():
print("Initialized:")
print(" Starting time: %s" % str(time_elapsed))

func _idle(delta):
time_elapsed += delta
# Return true to end the main loop.
return quit

func _input_event(event):
# Record keys.
if event is InputEventKey and event.pressed and !event.echo:
keys_typed.append(OS.get_scancode_string(event.scancode))
# Quit on Escape press.
if event.scancode == KEY_ESCAPE:
quit = true
# Quit on any mouse click.
if event is InputEventMouseButton:
quit = true

func _finalize():
print("Finalized:")
print(" End time: %s" % str(time_elapsed))
print(" Keys typed: %s" % var2str(keys_typed))

方法

返回值类型方法名称
void_drop_files(files: PoolStringArray, from_screen: int) virtual
void_finalize() virtual
void_global_menu_action(id: Variant, meta: Variant) virtual
bool_idle(delta: float) virtual
void_initialize() virtual
void_input_event(event: InputEvent) virtual
void_input_text(text: String) virtual
bool_iteration(delta: float) virtual
voidfinish()
boolidle(delta: float)
voidinit()
voidinput_event(event: InputEvent)
voidinput_text(text: String)
booliteration(delta: float)

信号

  • **on_request_permissions_result**

当用户响应权限请求时发出。


方法说明

  • _drop_files _drop_files(files: PoolStringArray, from_screen: int) virtual

当文件从OS文件管理器中拖放到游戏窗口中时调用。


  • _finalize _finalize() virtual

在程序退出之前调用。


  • _global_menu_action _global_menu_action(id: Variant, meta: Variant) virtual

当用户在系统全局菜单(例如Mac OS菜单栏)中执行操作时调用。


  • _idle _idle(delta: float) virtual

以最后一个空闲帧以来的时间作为参数调用每个空闲帧(以秒为单位)。

如果实现,则该方法必须返回布尔值。


  • _initialize _initialize() virtual

在初始化期间调用一次。


  • _input_event _input_event(event: InputEvent) virtual

每当主循环接收到InputEvent时调用。


  • _input_text _input_text(text: String) virtual

不建议使用的回调,不执行任何操作。


  • _iteration _iteration(delta: float) virtual

以上一个物理帧以来的时间作为参数调用每个物理帧(以秒为单位)。

如果实现,则该方法必须返回布尔值。


  • finish finish()

不应手动调用,而是改写_finalize


  • idle idle(delta: float)

不应手动调用,请改写_idle


  • init init()

不应手动调用,而是改写_initialize


  • input_event input_event(event: InputEvent)

不应手动调用,请改写_input_event


  • input_text input_text(text: String)

不应手动调用,请改写_input_text


  • iteration iteration(delta: float)

不应手动调用,请改写_iteration