欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图




1.1 应用简介
AR室内探险游戏是一款创新的增强现实游戏应用,将玩家的真实家居环境转变为充满乐趣的探险场所。通过AR技术,玩家可以在家中寻找虚拟宝藏、完成各种任务挑战,体验身临其境的冒险体验。游戏支持多人模式,可与家人朋友一起探索,在家也能享受探险的乐趣。
应用以神秘的紫色为主色调,象征冒险与探索。涵盖游戏主页、AR探险、任务系统、成就系统四大模块。玩家可以创建游戏、设置难度、选择场景、开始探险,在真实环境中发现虚拟宝藏,完成任务获得奖励。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| AR寻宝 | 在真实环境中寻找虚拟宝藏 | AR技术 |
| 任务系统 | 完成各种探险任务 | 任务引擎 |
| 场景识别 | 识别室内环境并生成游戏场景 | 环境扫描 |
| 多人模式 | 与家人朋友一起探险 | 本地多人 |
| 成就系统 | 解锁各种成就和奖励 | 成就引擎 |
| 排行榜 | 记录最佳成绩和完成时间 | 本地存储 |
| 自定义场景 | 创建个性化探险场景 | 场景编辑器 |
| 社交分享 | 分享探险成果和截图 | 分享功能 |
1.3 游戏模式定义
| 序号 | 模式名称 | Emoji | 描述 | 适合人数 |
|---|---|---|---|---|
| 1 | 单人探险 | 👤 | 独自探索家中宝藏 | 1人 |
| 2 | 家庭模式 | 👨👩👧👦 | 与家人一起寻找宝藏 | 2-4人 |
| 3 | 挑战模式 | 🏆 | 限时完成特定任务 | 1-2人 |
| 4 | 自定义模式 | 🎨 | 自定义场景和规则 | 1-4人 |
1.4 难度等级定义
| 序号 | 难度名称 | Emoji | 宝藏数量 | 任务难度 | 时间限制 |
|---|---|---|---|---|---|
| 1 | 简单 | 🌱 | 5-8个 | 基础 | 无限制 |
| 2 | 中等 | 🌿 | 9-12个 | 进阶 | 30分钟 |
| 3 | 困难 | 🌳 | 13-16个 | 高级 | 20分钟 |
| 4 | 专家 | 🏔️ | 17-20个 | 专家 | 15分钟 |
1.5 宝藏类型定义
| 序号 | 宝藏名称 | Emoji | 价值 | 描述 |
|---|---|---|---|---|
| 1 | 金币 | 💰 | 10 | 基础宝藏 |
| 2 | 宝石 | 💎 | 25 | 稀有宝藏 |
| 3 | 钻石 | 💍 | 50 | 珍贵宝藏 |
| 4 | 宝箱 | 📦 | 100 | 超级宝藏 |
| 5 | 地图碎片 | 🗺️ | 5 | 收集物品 |
| 6 | 钥匙 | 🔑 | 5 | 解锁物品 |
1.6 任务类型定义
| 序号 | 任务名称 | Emoji | 难度 | 奖励 |
|---|---|---|---|---|
| 1 | 寻宝者 | 🔍 | 简单 | 100分 |
| 2 | 时间挑战 | ⏱️ | 中等 | 200分 |
| 3 | 谜题破解 | 🧩 | 困难 | 300分 |
| 4 | 物品收集 | 📱 | 简单 | 150分 |
| 5 | 障碍挑战 | 🚧 | 中等 | 250分 |
| 6 | 团队协作 | 🤝 | 困难 | 400分 |
1.7 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| AR技术 | ARCore/ARKit | 最新版本 |
| 状态管理 | Provider | >= 6.0.0 |
| 数据存储 | SharedPreferences | >= 2.0.0 |
| 动画库 | Lottie | >= 2.0.0 |
| 目标平台 | 鸿蒙OS / Web | API 21+ |
1.8 项目结构
lib/
└── main_ar_adventure.dart
├── ARAdventureGameApp # 应用入口
├── GameMode # 游戏模式枚举
├── DifficultyLevel # 难度等级枚举
├── TreasureType # 宝藏类型枚举
├── TaskType # 任务类型枚举
├── GameLevel # 游戏关卡模型
├── Treasure # 宝藏模型
├── Task # 任务模型
├── Achievement # 成就模型
├── PlayerProgress # 玩家进度模型
├── ARAdventureHomePage # 主页面(底部导航)
├── _buildHomePage # 主页
├── _buildARPage # AR探险页
├── _buildTasksPage # 任务页
├── _buildAchievementsPage # 成就页
├── ARTreasurePainter # AR宝藏绘制器
└── GameMapPainter # 游戏地图绘制器
二、系统架构
2.1 整体架构图
Data Layer
Business Layer
Presentation Layer
主页面
ARAdventureHomePage
主页
AR探险页
任务页
成就页
游戏设置
模式选择
难度选择
AR场景
宝藏寻找
任务完成
任务列表
任务详情
成就列表
排行榜
游戏引擎
GameEngine
AR管理器
ARManager
任务系统
TaskSystem
成就系统
AchievementSystem
GameLevel
游戏关卡
Treasure
宝藏
Task
任务
Achievement
成就
2.2 类图设计
has
has
contains
contains
has
ARAdventureGameApp
+Widget build()
<<enumeration>>
GameMode
+String label
+String emoji
+String description
+singlePlayer()
+family()
+challenge()
+custom()
<<enumeration>>
DifficultyLevel
+String label
+String emoji
+int treasureCount
+int timeLimit
+easy()
+medium()
+hard()
+expert()
<<enumeration>>
TreasureType
+String label
+String emoji
+int value
+gold()
+gem()
+diamond()
+chest()
+map()
+key()
GameLevel
+String id
+String name
+GameMode mode
+DifficultyLevel difficulty
+int treasureCount
+List<Treasure> treasures
+List<Task> tasks
+int timeLimit
+DateTime createdAt
Treasure
+String id
+String levelId
+TreasureType type
+Offset position
+bool isFound
+DateTime foundAt
Task
+String id
+String levelId
+TaskType type
+String description
+int reward
+bool isCompleted
+DateTime completedAt
Achievement
+String id
+String name
+String description
+String icon
+bool isUnlocked
+DateTime unlockedAt
PlayerProgress
+String id
+String playerName
+int totalScore
+int totalTreasures
+int totalTasks
+List<Achievement> achievements
2.3 页面导航流程
选择模式
是
否
是
否
是
否
应用启动
主页
游戏设置
选择难度
开始游戏
AR探险页
扫描环境
寻找宝藏
找到宝藏?
获得奖励
完成任务?
任务完成
游戏结束?
游戏结算
查看成就
分享结果
2.4 游戏流程
AR管理器 游戏引擎 主页 玩家 AR管理器 游戏引擎 主页 玩家 alt [找到宝藏] [未找到] alt [游戏结束] [游戏继续] 选择游戏模式 创建游戏 返回游戏信息 开始游戏 初始化AR 扫描环境 显示AR场景 移动寻找宝藏 检测宝藏位置 显示宝藏 收集宝藏 更新游戏状态 显示奖励 继续寻找 完成任务 检查游戏结束 显示游戏结果 查看成就 继续游戏
三、核心模块设计
3.1 数据模型设计
3.1.1 游戏模式枚举 (GameMode)
dart
enum GameMode {
singlePlayer(label: '单人探险', emoji: '👤', description: '独自探索家中宝藏', maxPlayers: 1),
family(label: '家庭模式', emoji: '👨👩👧👦', description: '与家人一起寻找宝藏', maxPlayers: 4),
challenge(label: '挑战模式', emoji: '🏆', description: '限时完成特定任务', maxPlayers: 2),
custom(label: '自定义模式', emoji: '🎨', description: '自定义场景和规则', maxPlayers: 4);
final String label;
final String emoji;
final String description;
final int maxPlayers;
const GameMode({
required this.label,
required this.emoji,
required this.description,
required this.maxPlayers,
});
}
3.1.2 难度等级枚举 (DifficultyLevel)
dart
enum DifficultyLevel {
easy(label: '简单', emoji: '🌱', treasureCount: 8, timeLimit: 0),
medium(label: '中等', emoji: '🌿', treasureCount: 12, timeLimit: 1800),
hard(label: '困难', emoji: '🌳', treasureCount: 16, timeLimit: 1200),
expert(label: '专家', emoji: '🏔️', treasureCount: 20, timeLimit: 900);
final String label;
final String emoji;
final int treasureCount;
final int timeLimit;
const DifficultyLevel({
required this.label,
required this.emoji,
required this.treasureCount,
required this.timeLimit,
});
}
3.1.3 游戏关卡模型 (GameLevel)
dart
class GameLevel {
final String id;
final String name;
final GameMode mode;
final DifficultyLevel difficulty;
final int treasureCount;
final List<Treasure> treasures;
final List<Task> tasks;
final int timeLimit;
final DateTime createdAt;
const GameLevel({
required this.id,
required this.name,
required this.mode,
required this.difficulty,
required this.treasureCount,
required this.treasures,
required this.tasks,
required this.timeLimit,
required this.createdAt,
});
}
3.1.4 宝藏模型 (Treasure)
dart
class Treasure {
final String id;
final String levelId;
final TreasureType type;
final Offset position;
final bool isFound;
final DateTime? foundAt;
const Treasure({
required this.id,
required this.levelId,
required this.type,
required this.position,
required this.isFound,
this.foundAt,
});
Treasure copyWith({
bool? isFound,
DateTime? foundAt,
}) {
return Treasure(
id: id,
levelId: levelId,
type: type,
position: position,
isFound: isFound ?? this.isFound,
foundAt: foundAt ?? this.foundAt,
);
}
}
3.1.5 游戏模式分布
45% 30% 15% 10% 游戏模式使用分布示例 单人探险 家庭模式 挑战模式 自定义模式
3.2 页面结构设计
3.2.1 主页面布局
ARAdventureHomePage
IndexedStack
主页
AR探险页
任务页
成就页
NavigationBar
主页 Tab
AR Tab
任务 Tab
成就 Tab
3.2.2 主页结构
主页
SliverAppBar
游戏模式选择
难度等级选择
开始游戏按钮
游戏历史
设置选项
模式卡片列表
难度滑块
最近游戏
最佳成绩
3.2.3 AR探险页结构
AR探险页
AR视图
游戏信息
雷达指示器
任务进度
暂停按钮
环境扫描
宝藏显示
交互提示
剩余时间
已找到宝藏
当前分数
宝藏方向
距离指示
3.2.4 任务页结构
任务页
SliverAppBar
任务列表
任务详情
任务奖励
进行中任务
已完成任务
未开始任务
任务描述
任务目标
完成条件
3.3 游戏引擎逻辑
找到
未找到
是
否
是
否
初始化游戏
生成关卡
放置宝藏
分配任务
开始游戏
玩家移动
检测宝藏
收集宝藏
更新分数
完成任务?
完成任务
游戏结束?
游戏结算
解锁成就
保存成绩
3.4 AR宝藏检测逻辑
是
否
是
否
是
否
初始化AR
扫描环境
创建场景
放置虚拟宝藏
玩家移动
更新玩家位置
计算与宝藏距离
距离<阈值?
显示宝藏
玩家交互
点击宝藏?
收集宝藏
更新游戏状态
还有宝藏?
游戏结束
四、UI设计规范
4.1 配色方案
应用以神秘的紫色为主色调,象征冒险与探索:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #9C27B0 (Purple) | 导航、主题元素 |
| 辅助色 | #BA68C8 | AR页面 |
| 第三色 | #CE93D8 | 任务页面 |
| 强调色 | #E1BEE7 | 成就页面 |
| 背景色 | #FAFAFA | 页面背景 |
| 卡片背景 | #FFFFFF | 信息卡片 |
| 警告色 | #FF9800 | 时间警告 |
| 成功色 | #4CAF50 | 任务完成 |
4.2 难度等级配色
| 难度 | 色值 | 视觉效果 |
|---|---|---|
| 简单 | #4CAF50 | 绿色 |
| 中等 | #FFC107 | 黄色 |
| 困难 | #FF9800 | 橙色 |
| 专家 | #F44336 | 红色 |
4.3 字体规范
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 页面标题 | 24px | Bold | 主色 |
| 游戏标题 | 32px | Bold | 主色 |
| 分数显示 | 48px | Bold | #000000 |
| 任务名称 | 18px | Bold | #000000 |
| 提示文字 | 14px | Regular | #666666 |
| 倒计时 | 24px | Bold | #F44336 |
4.4 组件规范
4.4.1 游戏模式卡片
┌─────────────────────────────────────┐
│ 选择游戏模式 │
│ │
│ ┌─────────────────────────────┐ │
│ │ 👤 单人探险 │ │
│ │ 独自探索家中宝藏 │ │
│ │ 最多1人 │ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ 👨👩👧👦 家庭模式 │ │
│ │ 与家人一起寻找宝藏 │ │
│ │ 最多4人 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
4.4.2 难度选择器
┌─────────────────────────────────────┐
│ 选择难度 │
│ │
│ 🌱 简单 🌿 中等 🌳 困难 │
│ ─────●──────────────────────── │
│ │
│ 宝藏数量: 8个 │
│ 时间限制: 无限制 │
└─────────────────────────────────────┘
4.4.3 AR探险界面
┌─────────────────────────────────────┐
│ 🕐 28:45 💰 125 🏆 2/5 │ │
│ │
│ [AR视图区域] │
│ │
│ ╔═══════════════════════════╗ │
│ ║ 📡 ║ │
│ ║ ║ │
│ ║ ↑ 宝藏在上方 10米 ║ │
│ ╚═══════════════════════════╝ │
│ │
│ [任务: 收集5个金币] │
└─────────────────────────────────────┘
4.4.4 任务卡片
┌─────────────────────────────────────┐
│ 任务列表 │
│ │
│ ┌─────────────────────────────┐ │
│ │ 🔍 寻宝者 │ │
│ │ 收集10个金币 │ │
│ │ 进度: 5/10 💰 100分 │ │
│ │ ══════●─────────────── │ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ ⏱️ 时间挑战 │ │
│ │ 10分钟内找到5个宝藏 │ │
│ │ 进度: 3/5 💰 200分 │ │
│ │ ════════●──────────── │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
4.4.5 成就卡片
┌─────────────────────────────────────┐
│ 成就列表 │
│ │
│ ┌─────────────────────────────┐ │
│ │ 🏆 宝藏猎人 │ │
│ │ 找到100个宝藏 │ │
│ │ ✅ 已解锁 2024-03-15 │ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ 🏆 时间大师 │ │
│ │ 10分钟内完成困难模式 │ │
│ │ ❌ 未解锁 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
五、核心功能实现
5.1 游戏引擎实现
dart
class GameEngine {
GameLevel createGame(GameMode mode, DifficultyLevel difficulty) {
final treasures = _generateTreasures(difficulty.treasureCount);
final tasks = _generateTasks(mode, difficulty);
return GameLevel(
id: 'level_${DateTime.now().millisecondsSinceEpoch}',
name: '${mode.label} - ${difficulty.label}',
mode: mode,
difficulty: difficulty,
treasureCount: difficulty.treasureCount,
treasures: treasures,
tasks: tasks,
timeLimit: difficulty.timeLimit,
createdAt: DateTime.now(),
);
}
List<Treasure> _generateTreasures(int count) {
List<Treasure> treasures = [];
final types = TreasureType.values;
for (int i = 0; i < count; i++) {
final type = types[Random().nextInt(types.length)];
final position = _generateRandomPosition();
treasures.add(Treasure(
id: 'treasure_$i',
levelId: '',
type: type,
position: position,
isFound: false,
));
}
return treasures;
}
List<Task> _generateTasks(GameMode mode, DifficultyLevel difficulty) {
// 生成任务逻辑
}
}
5.2 AR管理器实现
dart
class ARManager {
void initializeAR() {
// 初始化AR环境
}
void scanEnvironment() {
// 扫描环境并创建虚拟场景
}
void placeTreasures(List<Treasure> treasures) {
// 在AR场景中放置宝藏
}
Treasure? detectTreasure(Offset playerPosition) {
// 检测玩家附近的宝藏
for (var treasure in _activeTreasures) {
if (!treasure.isFound && _distance(playerPosition, treasure.position) < 1.0) {
return treasure;
}
}
return null;
}
double _distance(Offset a, Offset b) {
return sqrt(pow(a.dx - b.dx, 2) + pow(a.dy - b.dy, 2));
}
}
5.3 任务系统实现
dart
class TaskSystem {
bool checkTaskCompletion(Task task, GameLevel level) {
switch (task.type) {
case TaskType.treasureHunter:
return _checkTreasureCount(level, 10);
case TaskType.timeChallenge:
return _checkTimeChallenge(level, 600);
case TaskType.puzzleSolver:
return _checkPuzzleSolved(task);
default:
return false;
}
}
bool _checkTreasureCount(GameLevel level, int required) {
final foundTreasures = level.treasures.where((t) => t.isFound).length;
return foundTreasures >= required;
}
bool _checkTimeChallenge(GameLevel level, int timeLimit) {
// 检查时间挑战完成情况
}
bool _checkPuzzleSolved(Task task) {
// 检查谜题是否解决
}
}
5.4 成就系统实现
dart
class AchievementSystem {
List<Achievement> checkAchievements(PlayerProgress progress) {
List<Achievement> unlockedAchievements = [];
// 检查宝藏猎人成就
if (progress.totalTreasures >= 100 && !_isAchievementUnlocked(progress, 'treasure_hunter')) {
unlockedAchievements.add(_createAchievement('treasure_hunter'));
}
// 检查时间大师成就
if (progress.fastestTime <= 600 && !_isAchievementUnlocked(progress, 'time_master')) {
unlockedAchievements.add(_createAchievement('time_master'));
}
return unlockedAchievements;
}
bool _isAchievementUnlocked(PlayerProgress progress, String achievementId) {
return progress.achievements.any((a) => a.id == achievementId && a.isUnlocked);
}
Achievement _createAchievement(String id) {
// 创建成就
}
}
5.5 游戏结算实现
dart
void _endGame(GameLevel level) {
final foundTreasures = level.treasures.where((t) => t.isFound).length;
final completedTasks = level.tasks.where((t) => t.isCompleted).length;
final score = _calculateScore(foundTreasures, completedTasks, level.difficulty);
final progress = PlayerProgress(
id: 'progress_${DateTime.now().millisecondsSinceEpoch}',
playerName: _playerName,
totalScore: score,
totalTreasures: foundTreasures,
totalTasks: completedTasks,
achievements: _achievementSystem.checkAchievements(_currentProgress),
);
_saveProgress(progress);
_showGameResults(progress);
}
int _calculateScore(int treasures, int tasks, DifficultyLevel difficulty) {
final baseScore = treasures * 10 + tasks * 50;
final difficultyMultiplier = _getDifficultyMultiplier(difficulty);
return (baseScore * difficultyMultiplier).toInt();
}
double _getDifficultyMultiplier(DifficultyLevel difficulty) {
switch (difficulty) {
case DifficultyLevel.easy:
return 1.0;
case DifficultyLevel.medium:
return 1.5;
case DifficultyLevel.hard:
return 2.0;
case DifficultyLevel.expert:
return 2.5;
}
}
六、交互设计
6.1 游戏流程
gameEngine AR管理器 游戏引擎 主页 玩家 gameEngine AR管理器 游戏引擎 主页 玩家 alt [找到宝藏] alt [时间结束或所有宝藏找到] loop [游戏过程] 打开应用 显示游戏模式选择 选择游戏模式 选择难度 点击开始游戏 创建游戏 返回游戏信息 初始化AR 扫描环境 显示AR场景 移动寻找宝藏 检测宝藏 显示宝藏 点击收集 更新宝藏状态 检查任务完成 显示奖励 结束游戏 显示游戏结果 查看成就 显示成就
6.2 多人模式流程
是
否
是
否
创建多人游戏
设置游戏参数
生成游戏代码
其他玩家加入
开始游戏
分配角色
共同寻找宝藏
找到宝藏?
团队得分
所有宝藏找到?
团队胜利
团队奖励
分享成果
6.3 成就解锁流程
完成特定目标
检查条件
弹出成就提示
点击查看
游戏进行
达成条件
解锁成就
显示通知
查看成就
七、扩展功能规划
7.1 后续版本规划
2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 2024-03-24 2024-03-31 2024-04-07 基础UI框架 游戏引擎开发 AR功能实现 多人模式开发 任务系统完善 成就系统实现 自定义场景 社交功能 AR物品交互 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 AR室内探险游戏开发计划
7.2 功能扩展建议
7.2.1 自定义场景编辑器
编辑功能:
- 自由放置虚拟宝藏
- 设置任务目标
- 自定义游戏规则
- 分享自定义场景
7.2.2 社交功能
社交功能:
- 邀请好友一起游戏
- 排行榜竞争
- 成就分享
- 游戏截图分享
7.2.3 AR物品交互
交互功能:
- 虚拟物品收集
- 物品组合解谜
- 虚拟工具使用
- 环境互动效果
八、注意事项
8.1 开发注意事项
-
AR性能:确保AR体验流畅,避免卡顿
-
环境识别:优化环境扫描算法,适应不同室内环境
-
电池消耗:AR功能会消耗大量电量,需优化
-
隐私保护:确保AR扫描不侵犯用户隐私
-
设备兼容性:适配不同设备的AR能力
8.2 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| AR识别失败 | 环境特征不足 | 建议在有明显特征的环境使用 |
| 宝藏不显示 | 距离过远 | 靠近宝藏位置 |
| 游戏卡顿 | 设备性能不足 | 降低AR质量设置 |
| 电池消耗快 | AR持续运行 | 增加电池优化提示 |
| 多人同步问题 | 网络延迟 | 优化同步机制 |
8.3 使用技巧
🎮 AR探险游戏技巧 🎮
游戏准备
- 确保室内光线充足
- 清理游戏区域障碍物
- 保持设备电量充足
- 选择合适的游戏模式
寻宝技巧
- 仔细观察AR场景中的提示
- 利用雷达指示器寻找方向
- 注意听寻宝提示音
- 团队合作效率更高
任务完成
- 优先完成简单任务
- 合理分配时间
- 注意任务目标变化
- 利用道具辅助完成
九、运行说明
9.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| 鸿蒙OS | API 21+ |
| ARCore/ARKit | 最新版本 |
| Web浏览器 | Chrome 90+ (支持WebXR) |
9.2 运行命令
bash
# 查看可用设备
flutter devices
# 运行到Web服务器
flutter run -d web-server -t lib/main_ar_adventure.dart --web-port 8144
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_ar_adventure.dart
# 代码分析
flutter analyze lib/main_ar_adventure.dart
十、总结
AR室内探险游戏应用通过AR技术将玩家的真实家居环境转变为充满乐趣的探险场所。应用支持单人探险、家庭模式、挑战模式、自定义模式四种游戏模式,以及简单、中等、困难、专家四个难度等级,满足不同玩家的需求。
核心功能涵盖AR寻宝、任务系统、场景识别、多人模式、成就系统、排行榜、自定义场景、社交分享八大模块。玩家可以在真实环境中寻找虚拟宝藏、完成各种任务挑战、解锁成就、与朋友分享成果,在家也能享受探险的乐趣。
应用采用 Material Design 3 设计规范,以神秘的紫色为主色调,象征冒险与探索。通过本应用,希望能够为用户带来全新的AR游戏体验,让家庭娱乐更加丰富多彩。
AR室内探险游戏------在家开启冒险之旅