MainLoop
继承
简要描述
游戏主循环的抽象基类。
描述
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 |
void | finish() |
bool | idle(delta: float) |
void | init() |
void | input_event(event: InputEvent) |
void | input_text(text: String) |
bool | iteration(delta: float) |
信号
- **on_request_permissions_result**
当用户响应权限请求时发出。
方法说明
- _drop_files _drop_files(files: PoolStringArray, from_screen: int) virtual
当文件从OS文件管理器中拖放到游戏窗口中时调用。
- _finalize _finalize() virtual
在程序退出之前调用。
- _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。