ebiten 学习(4)-Run 方法

2021SC@SDUSC


一、前言

1.说明

audio 说明文档地址

audio package - github.com/hajimehoshi/ebiten/v2/audio - pkg.go.dev

本文中所有截图和代码均来自说明文档或 ebiten 源文件

笔者负责 audio 音频相关的代码分析

2.梗概

详细分析 Run 方法的实现


二、跟着 Debug

1.设置断点

首先在 Update、Draw、Layout、main 方法中设置断点,观察启动顺序。
然后重点关注 Upadate 方法中的断点,查看音频相关方法的调用关系。

2.启动顺序

首先进入 main 函数
接着进入 RunGame 方法
在这里插入图片描述
之后调用 uiDriver 的 Run 方法
在这里插入图片描述
然后进入 Run 方法中的 Loop 方法
Loop 方法是比较重要的,之后程序一直在这个方法中循环
在这里插入图片描述
下面是循环方法,循环这个线程中的方法
在这里插入图片描述

  • main
    • RunGame
      • Run
        • Loop
          • Layout
          • Update
          • Draw

Layout、Update、Draw,三个方法循环调用

3.Run

下面具体解析一下 RunGame 中的 Run 方法
在这里插入图片描述

RunGame starts the main loop and runs the game.

必须在主线程上调用RunGame。
RunGame返回错误三种情况

  1. 底层图形驱动程序中发生错误
  2. 音频错误
  3. f 返回错误时

Run 方法
首先初始化主线程,以便线程在u.run时可用。
在这里插入图片描述
进入循环
在这里插入图片描述
Loop 启动线程循环,直到调用的函数返回 BreakLoop。
在这里插入图片描述
在这里插入图片描述
t.funcs 中就包含了 Update、Draw、Layout 三个方法
作用:

game’s Update function is called every tick to update the game logic.
game’s Draw function is called every frame to draw the screen.
game’s Layout function is called when necessary, and you can specify the logical screen size by the function.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值