【Flame 學習筆記】系列文章目錄:連結
【Flutter 學習筆記】線上課程教學影片:連結
【Flutter 學習筆記】系列文章目錄:連結
在 Flutter 開發中,若你想要將遊戲實例嵌入到 Flutter 的 widget 樹中,GameWidget
是一個不可或缺的工具。這個 widget 不僅功能強大,還能作為你 Flutter 應用程式的根部件,讓我們一起來看看如何使用它。
使用 GameWidget
的最簡單方式如下:
void main() {
runApp(
GameWidget(game: MyGame()),
);
}
這段程式碼展示了如何將 MyGame
的實例傳遞給 GameWidget
,並將其作為應用程式的根部件。值得注意的是,GameWidget
也可以被嵌入到 widget 樹的任意深度,這意味著在同一個應用程式中可以有多個 GameWidget
實例。
GameWidget
的佈局行為是自動擴展以填滿所有可用空間。因此,當它作為根部件使用時,應用程式將會全螢幕顯示;而在其他佈局 widget 中使用時,它也會盡可能佔用空間。
除了承載遊戲實例外,GameWidget
還提供了一些結構支援功能,包括:
需要注意的是,GameWidget
不會裁剪其畫布的內容,這意味著遊戲可能會在邊界外繪製(這取決於使用的相機)。如果不希望這樣,可以考慮將 widget 包裝在 Flutter 的 ClipRect
中。
GameWidget
提供了兩個建構子:
GameWidget({required this.game, ...})
gameFactory
。GameWidget.controlled({required this.gameFactory, ...})
這個建構子特別適合當你想將 GameWidget
放入另一個 widget 中,但又不想自己儲存遊戲實例的情況。例如:
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(20),
child: GameWidget.controlled(
gameFactory: MyGame.new,
),
);
}
}
controlled
建構子則為 null。