Flutter游戏数据插件dungeon_world_data的使用
Flutter 游戏数据插件 dungeon_world_data 的使用
此 Dart 包包含《Dungeon World》的游戏数据,如职业、动作、法术、装备等。
自定义职业包括:
- 点燃者(Immolator)
- 野蛮人(Barbarian)
如何使用
在导入后,可以通过 dungeonWorldData
访问整个数据结构。
更多详细信息请查看文档目录。
可用数据
代码 | 类型 |
---|---|
dungeonWorldData.characterClasses |
Map<String, CharacterClass> |
dungeonWorldData.items |
Map<String, Item> |
dungeonWorldData.moves |
Map<String, Move> |
dungeonWorldData.races |
Map<String, Race> |
dungeonWorldData.spells |
Map<String, Spell> |
dungeonWorldData.monsters |
Map<String, Monster> |
dungeonWorldData.tags |
Map<String, Tag> |
还有一个 Dice
类,用于简单的骰子滚动功能。
翻译
数据目前仅支持英语,但已实现本地化引擎。
- 使用
dungeonWorldData.initLocale(locale)
创建新的本地化引用。 - 使用
dungeonWorldData.addForLocale
或dungeonWorldData.addAllForLocale
向本地化中添加项目。 - 使用
dungeonWorldData.changeLocale(locale)
切换到不同的本地化。
在任何给定的本地化中,通过通用获取器 get(key)
和 []
操作符获取的项目只会包含当前本地化的数据。
可以使用 getItemFor(locale, key)
动态获取特定非当前本地化的数据。
致谢
感谢 ~vindexus 创建了 https://www.npmjs.com/package/dungeonworld-data。数据来自那里,此包只是将其封装为 Dart。
贡献
我在业余时间开发这个包,因此任何形式的支持(代码、问题或点赞)都非常有助于其发展。如果您愿意捐赠一些小额资金来帮助维持该项目,我将非常感激!

欢迎在 GitHub 上提交问题或拉取请求。如果您发现错误或想要新功能,请毫不犹豫地打开合适的议题,我会尽快回复。
代码贡献者
- 做出你的修改
- 运行测试并适当添加新测试。确保没有破坏任何东西。
- 创建一个 PR 并解释你的更改做了什么。
- 盈利!
如果您想为该包翻译 DW 数据:
- 在
lib/data
文件夹内创建一个具有语言代码的新文件夹。 - 将
lib/data/en-US
文件夹的内容复制到您的新文件夹。 - 更新所有本地化信息,包括每个属性的值(不是键!),以及标志语言的元标签。
示例代码
import 'package:dungeon_world_data/dungeon_world_data.dart';
void main() {
// 初始化数据
DungeonWorldData dungeonWorldData = DungeonWorldData();
// 获取某个职业
CharacterClass barbarian = dungeonWorldData.characterClasses['Barbarian'];
// 输出职业名称
print('职业名称: ${barbarian.name}');
// 获取某个动作
Move move = dungeonWorldData.moves['Defy Danger'];
// 输出动作描述
print('动作描述: ${move.description}');
}
更多关于Flutter游戏数据插件dungeon_world_data的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter游戏数据插件dungeon_world_data的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
dungeon_world_data
是一个用于在 Flutter 应用中访问和管理《Dungeon World》游戏数据的插件。它提供了一些工具和数据结构,帮助你轻松地获取和操作《Dungeon World》的各种游戏元素,如角色、怪物、物品等。
以下是使用 dungeon_world_data
插件的基本步骤和示例:
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 dungeon_world_data
插件的依赖:
dependencies:
flutter:
sdk: flutter
dungeon_world_data: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 dungeon_world_data
:
import 'package:dungeon_world_data/dungeon_world_data.dart';
3. 使用插件
获取角色数据
你可以使用 DungeonWorldData
类来访问游戏中的角色数据。例如,获取所有角色的列表:
void main() {
final dwData = DungeonWorldData();
// 获取所有角色
final characters = dwData.characters;
// 打印角色名称
for (var character in characters) {
print(character.name);
}
}
获取怪物数据
类似地,你可以获取怪物的数据:
void main() {
final dwData = DungeonWorldData();
// 获取所有怪物
final monsters = dwData.monsters;
// 打印怪物名称和血量
for (var monster in monsters) {
print('${monster.name} - HP: ${monster.hp}');
}
}
获取物品数据
你也可以获取物品的数据:
void main() {
final dwData = DungeonWorldData();
// 获取所有物品
final items = dwData.items;
// 打印物品名称和描述
for (var item in items) {
print('${item.name}: ${item.description}');
}
}
4. 自定义和扩展
dungeon_world_data
插件提供的数据结构是可扩展的。你可以根据需要自定义或扩展这些数据结构,以适应你的应用需求。
5. 处理错误和异常
在使用插件时,可能会遇到数据加载失败或其他异常情况。你可以使用 try-catch
块来处理这些异常:
void main() {
try {
final dwData = DungeonWorldData();
// 获取所有角色
final characters = dwData.characters;
// 打印角色名称
for (var character in characters) {
print(character.name);
}
} catch (e) {
print('An error occurred: $e');
}
}
6. 其他功能
dungeon_world_data
插件可能还提供了其他功能,如搜索、过滤等。你可以查阅插件的文档或源代码,了解更多详细信息。
7. 示例应用
你可以创建一个简单的 Flutter 应用来展示如何使用 dungeon_world_data
插件:
import 'package:flutter/material.dart';
import 'package:dungeon_world_data/dungeon_world_data.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Dungeon World Data Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: DungeonWorldDataScreen(),
);
}
}
class DungeonWorldDataScreen extends StatelessWidget {
final dwData = DungeonWorldData();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Dungeon World Data'),
),
body: ListView.builder(
itemCount: dwData.characters.length,
itemBuilder: (context, index) {
final character = dwData.characters[index];
return ListTile(
title: Text(character.name),
subtitle: Text(character.description),
);
},
),
);
}
}