From 32484e8cb8ca34c6883bee5864e4d8db1c0feebb Mon Sep 17 00:00:00 2001
From: keshaohong <740612340@qq.com>
Date: Mon, 29 Jun 2026 02:48:13 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E8=AE=BE=E8=AE=A1=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../specs/Enemy双重寻敌机制实现_task-69b.md | 377 ++++
.../.qoder/specs/亡灵灯笼游戏设计_task-982.md | 476 +++++
.../shaders/IndianOcean_DarknessOverlay.mat | 4 +-
unity/Assets/Scenes/Test.unity | 1680 ++++++++++++++++-
unity/唤魂灯笼-前置剧情.md | 355 ++++
5 files changed, 2868 insertions(+), 24 deletions(-)
create mode 100644 unity/.qoder/specs/Enemy双重寻敌机制实现_task-69b.md
create mode 100644 unity/.qoder/specs/亡灵灯笼游戏设计_task-982.md
create mode 100644 unity/唤魂灯笼-前置剧情.md
diff --git a/unity/.qoder/specs/Enemy双重寻敌机制实现_task-69b.md b/unity/.qoder/specs/Enemy双重寻敌机制实现_task-69b.md
new file mode 100644
index 0000000..995e165
--- /dev/null
+++ b/unity/.qoder/specs/Enemy双重寻敌机制实现_task-69b.md
@@ -0,0 +1,377 @@
+# Enemy双重寻敌机制实现计划
+
+## 需求总结
+
+1. **规则一:视觉检测与追击**
+ - 怪物通过射线检测看到玩家(360°全向视野)
+ - 看到玩家后追击
+ - 玩家脱离视线3秒后停止追击
+
+2. **规则二:铃铛响应**
+ - 玩家摇铃铛时,铃铛声波范围内的怪物获取铃铛位置
+ - 怪物追击到铃铛位置
+ - 追击过程中如果看到玩家,切换为追击玩家(执行规则一)
+ - 到达铃铛位置后,如果没有看到玩家,在周围巡逻一段时间
+
+## 状态机设计
+
+```
+Idle(待机)
+ ├─ 射线检测到玩家 → ChasingPlayer
+ └─ 收到铃铛信号 → ChasingBell
+
+ChasingPlayer(追击玩家)
+ ├─ 持续看到玩家 → 继续追击
+ ├─ 玩家脱离视线 → 开始计时(3秒)
+ │ └─ 3秒内重新看到 → 继续追击
+ │ └─ 3秒后仍未看到 → Idle
+ └─ 收到铃铛信号 → ChasingBell(打断当前状态)
+
+ChasingBell(追击铃铛)
+ ├─ 追击过程中射线检测到玩家 → ChasingPlayer
+ ├─ 到达铃铛位置 → PatrollingBell
+ └─ 超时(10秒未到达)→ Idle
+
+PatrollingBell(铃铛位置巡逻)
+ ├─ 巡逻过程中射线检测到玩家 → ChasingPlayer
+ └─ 巡逻时间结束(5秒)→ Idle
+```
+
+## 实现步骤
+
+### 步骤1:修改EnemyAI.cs - 添加新状态和参数
+
+**文件**: `Assets/enemy/EnemyAI.cs`
+
+**新增状态**:
+```csharp
+private enum State
+{
+ Idle,
+ ChasingPlayer, // 追击玩家
+ ChasingBell, // 追击铃铛
+ PatrollingBell // 铃铛位置巡逻
+}
+```
+
+**新增参数**:
+```csharp
+[Header("视觉检测")]
+[Tooltip("射线检测层(哪些物体会阻挡视线)")]
+[SerializeField] private LayerMask obstacleLayers;
+
+[Tooltip("射线起点偏移(避免从地面发射)")]
+[SerializeField] private float rayOffsetY = 0.5f;
+
+[Header("脱离计时")]
+[Tooltip("玩家脱离视线后,继续追击的时间(秒)")]
+[SerializeField] private float loseSightTime = 3f;
+
+[Header("铃铛追击")]
+[Tooltip("到达铃铛位置后的容差距离")]
+[SerializeField] private float bellArriveDistance = 1f;
+
+[Tooltip("追击铃铛的最大时间(超时则放弃)")]
+[SerializeField] private float bellChaseTimeout = 10f;
+
+[Header("铃铛巡逻")]
+[Tooltip("到达铃铛位置后的巡逻时间")]
+[SerializeField] private float bellPatrolTime = 5f;
+
+[Tooltip("巡逻半径")]
+[SerializeField] private float bellPatrolRadius = 3f;
+```
+
+**新增变量**:
+```csharp
+private float _loseSightTimer; // 脱离视线计时器
+private Vector3 _bellTargetPosition; // 铃铛目标位置
+private float _bellChaseTimer; // 铃铛追击计时器
+private Vector3 _patrolCenter; // 巡逻中心点
+private float _patrolTimer; // 巡逻计时器
+private Vector3 _patrolTarget; // 当前巡逻目标点
+```
+
+### 步骤2:实现射线检测视线
+
+**新增方法**:
+```csharp
+///
+/// 检测是否能看到玩家(射线检测)
+///
+private bool CanSeePlayer()
+{
+ if (playerTarget == null) return false;
+
+ // 射线起点(稍微抬高,避免从地面发射)
+ Vector3 rayStart = transform.position + Vector3.up * rayOffsetY;
+ Vector3 rayEnd = playerTarget.position + Vector3.up * rayOffsetY;
+ Vector3 dir = rayEnd - rayStart;
+ float dist = dir.magnitude;
+
+ // 发射射线,只检测障碍物层
+ if (Physics.Raycast(rayStart, dir.normalized, out RaycastHit hit, dist, obstacleLayers))
+ {
+ // 如果击中的是玩家,说明可以看到
+ return hit.transform == playerTarget;
+ }
+
+ return false;
+}
+```
+
+### 步骤3:修改状态机逻辑
+
+**Idle状态**:
+```csharp
+private void UpdateIdle()
+{
+ // 检测是否看到玩家
+ if (CanSeePlayer())
+ {
+ _state = State.ChasingPlayer;
+ _loseSightTimer = 0f;
+ return;
+ }
+}
+```
+
+**ChasingPlayer状态**:
+```csharp
+private void UpdateChasingPlayer()
+{
+ // 检测是否看到玩家
+ if (CanSeePlayer())
+ {
+ _loseSightTimer = 0f; // 重置计时器
+
+ // 追击玩家
+ float dist = XZDistance(transform.position, playerTarget.position);
+ if (dist > stopDistance)
+ {
+ MoveToward(playerTarget.position, chaseSpeed);
+ }
+ }
+ else
+ {
+ // 玩家脱离视线,开始计时
+ _loseSightTimer += Time.deltaTime;
+
+ // 继续朝玩家最后已知位置移动
+ if (playerTarget != null)
+ {
+ float dist = XZDistance(transform.position, playerTarget.position);
+ if (dist > stopDistance)
+ {
+ MoveToward(playerTarget.position, chaseSpeed);
+ }
+ }
+
+ // 超过3秒,停止追击
+ if (_loseSightTimer >= loseSightTime)
+ {
+ _state = State.Idle;
+ }
+ }
+}
+```
+
+**ChasingBell状态**:
+```csharp
+private void UpdateChasingBell()
+{
+ // 追击过程中检测是否看到玩家
+ if (CanSeePlayer())
+ {
+ _state = State.ChasingPlayer;
+ _loseSightTimer = 0f;
+ return;
+ }
+
+ // 追击计时
+ _bellChaseTimer += Time.deltaTime;
+ if (_bellChaseTimer >= bellChaseTimeout)
+ {
+ _state = State.Idle;
+ return;
+ }
+
+ // 检测是否到达铃铛位置
+ float dist = XZDistance(transform.position, _bellTargetPosition);
+ if (dist <= bellArriveDistance)
+ {
+ // 到达铃铛位置,开始巡逻
+ _state = State.PatrollingBell;
+ _patrolCenter = _bellTargetPosition;
+ _patrolTimer = 0f;
+ PickNewPatrolPoint();
+ return;
+ }
+
+ // 朝铃铛位置移动
+ MoveToward(_bellTargetPosition, chaseSpeed);
+}
+```
+
+**PatrollingBell状态**:
+```csharp
+private void UpdatePatrollingBell()
+{
+ // 巡逻过程中检测是否看到玩家
+ if (CanSeePlayer())
+ {
+ _state = State.ChasingPlayer;
+ _loseSightTimer = 0f;
+ return;
+ }
+
+ // 巡逻计时
+ _patrolTimer += Time.deltaTime;
+ if (_patrolTimer >= bellPatrolTime)
+ {
+ _state = State.Idle;
+ return;
+ }
+
+ // 朝巡逻点移动
+ float dist = XZDistance(transform.position, _patrolTarget);
+ if (dist <= 0.5f)
+ {
+ // 到达巡逻点,选择新的巡逻点
+ PickNewPatrolPoint();
+ }
+ else
+ {
+ MoveToward(_patrolTarget, chaseSpeed * 0.7f); // 巡逻时速度稍慢
+ }
+}
+
+///
+/// 选择新的巡逻点
+///
+private void PickNewPatrolPoint()
+{
+ // 在巡逻中心周围随机选择一个点
+ Vector2 randomDir = Random.insideUnitCircle * bellPatrolRadius;
+ _patrolTarget = _patrolCenter + new Vector3(randomDir.x, 0f, randomDir.y);
+}
+```
+
+### 步骤4:修改铃铛响应逻辑
+
+**OnBell方法**:
+```csharp
+private void OnBell(Vector3 bellPos)
+{
+ if (playerTarget == null) return;
+
+ // 只有在聆听范围内才响应
+ if (XZDistance(transform.position, bellPos) > listenRange) return;
+
+ // 设置铃铛目标位置
+ _bellTargetPosition = bellPos;
+ _bellChaseTimer = 0f;
+
+ // 切换到追击铃铛状态(可以打断任何状态)
+ _state = State.ChasingBell;
+}
+```
+
+### 步骤5:更新状态机调用
+
+**Update方法**:
+```csharp
+private void Update()
+{
+ switch (_state)
+ {
+ case State.Idle: UpdateIdle(); break;
+ case State.ChasingPlayer: UpdateChasingPlayer(); break;
+ case State.ChasingBell: UpdateChasingBell(); break;
+ case State.PatrollingBell: UpdatePatrollingBell(); break;
+ }
+}
+```
+
+### 步骤6:更新编辑器可视化
+
+**OnDrawGizmos方法**:
+```csharp
+private void OnDrawGizmosSelected()
+{
+ // 根据状态显示不同颜色
+ Color stateColor = Color.white;
+ switch (_state)
+ {
+ case State.Idle: stateColor = Color.gray; break;
+ case State.ChasingPlayer: stateColor = Color.red; break;
+ case State.ChasingBell: stateColor = Color.yellow; break;
+ case State.PatrollingBell: stateColor = Color.cyan; break;
+ }
+
+ // 绘制当前状态指示
+ Gizmos.color = stateColor;
+ Gizmos.DrawWireSphere(transform.position, 0.5f);
+
+ // 绘制铃铛目标(如果在追击铃铛)
+ if (_state == State.ChasingBell || _state == State.PatrollingBell)
+ {
+ Gizmos.color = Color.yellow;
+ Gizmos.DrawWireSphere(_bellTargetPosition, bellArriveDistance);
+
+ // 绘制到铃铛的连线
+ Gizmos.DrawLine(transform.position, _bellTargetPosition);
+ }
+
+ // 绘制巡逻范围(如果在巡逻)
+ if (_state == State.PatrollingBell)
+ {
+ Gizmos.color = Color.cyan;
+ Gizmos.DrawWireSphere(_patrolCenter, bellPatrolRadius);
+
+ // 绘制当前巡逻目标
+ Gizmos.color = Color.green;
+ Gizmos.DrawWireSphere(_patrolTarget, 0.3f);
+ }
+}
+```
+
+## 配置参数建议
+
+| 参数 | 建议值 | 说明 |
+|-----|--------|------|
+| `obstacleLayers` | Obstacle | 阻挡视线的物体层 |
+| `rayOffsetY` | 0.5 | 射线起点高度 |
+| `loseSightTime` | 3.0 | 脱离视线后继续追击时间 |
+| `bellArriveDistance` | 1.0 | 到达铃铛位置的容差 |
+| `bellChaseTimeout` | 10.0 | 追击铃铛最大时间 |
+| `bellPatrolTime` | 5.0 | 铃铛位置巡逻时间 |
+| `bellPatrolRadius` | 3.0 | 巡逻半径 |
+
+## 测试要点
+
+1. **视觉检测测试**
+ - 在Enemy和玩家之间放置障碍物,验证射线被阻挡
+ - 移除障碍物,验证能检测到玩家
+
+2. **脱离视线测试**
+ - 玩家跑出Enemy视线,验证3秒后停止追击
+ - 3秒内重新出现,验证继续追击
+
+3. **铃铛响应测试**
+ - 玩家摇铃铛,验证Enemy朝铃铛位置移动
+ - 铃铛追击过程中看到玩家,验证切换为追击玩家
+
+4. **巡逻测试**
+ - 到达铃铛位置后,验证在周围巡逻
+ - 巡逻过程中看到玩家,验证切换为追击玩家
+
+## 文件清单
+
+- 修改: `Assets/enemy/EnemyAI.cs`
+
+## 预计工作量
+
+- 实现时间: 2-3小时
+- 调试时间: 1-2小时
+- 总计: 3-5小时
\ No newline at end of file
diff --git a/unity/.qoder/specs/亡灵灯笼游戏设计_task-982.md b/unity/.qoder/specs/亡灵灯笼游戏设计_task-982.md
new file mode 100644
index 0000000..3238120
--- /dev/null
+++ b/unity/.qoder/specs/亡灵灯笼游戏设计_task-982.md
@@ -0,0 +1,476 @@
+# 亡灵灯笼 - 游戏设计文档
+
+## 🎮 游戏概述
+
+**游戏名称**: 亡灵灯笼 (Soul Lantern)
+**游戏类型**: 2.5D 冒险解谜 + 生存收集
+**核心玩法**: 探索黑暗迷宫 → 收集亡灵 → 躲避怪物和陷阱 → 解救亡灵
+**视觉风格**: 2.5D等距视角,黑暗氛围,灯笼光照效果
+**目标平台**: PC (可扩展到移动端)
+
+---
+
+## 🎯 核心游戏循环
+
+```
+1. 探索阶段
+ - 玩家在黑暗迷宫中探索
+ - 灯笼提供有限视野
+ - 铃铛声会吸引怪物
+
+2. 收集阶段
+ - 找到被困的亡灵
+ - 使用技能将亡灵收入灯笼
+ - 灯笼亮度和铃铛范围增加
+
+3. 危险阶段
+ - 怪物被铃声吸引,开始追击
+ - 触发陷阱和机关
+ - 需要躲避或战斗
+
+4. 逃脱阶段
+ - 找到出口或传送门
+ - 切换到下一张地图
+ - 保存进度
+```
+
+---
+
+## 🕹️ 玩家系统
+
+### 1. 灯笼系统 (Lantern System)
+
+**核心道具**: 魔法灯笼
+
+| 属性 | 初始值 | 升级方式 |
+|-----|--------|---------|
+| **照亮范围** | 5m | 收集亡灵后增加 |
+| **铃铛范围** | 10m | 收集亡灵后增加 |
+| **亡灵容量** | 3个 | 升级灯笼 |
+| **特殊技能CD** | 10秒 | 升级技能 |
+
+**功能**:
+- ✅ **照明**: 提供周围视野(已实现LightMaskSystem)
+- ✅ **铃铛**: 按E释放声波(已实现EchoSystem)
+- ✅ **收集**: 靠近亡灵时自动收入灯笼
+- ✅ **技能**: 按Q释放"灵魂冲击"(范围眩晕)
+
+**视觉效果**:
+```
+灯笼亮度 = 基础亮度 + (亡灵数量 × 单个亡灵亮度)
+视野半径 = 5m + (亡灵数量 × 2m)
+铃铛半径 = 10m + (亡灵数量 × 3m)
+```
+
+### 2. 玩家属性
+
+| 属性 | 说明 |
+|-----|------|
+| **生命值** | 3颗心(被怪物碰到扣1颗) |
+| **移动速度** | 5单位/秒 |
+| **闪避能力** | 空格键翻滚(短暂无敌) |
+| **技能CD** | 10秒(可升级减少) |
+
+### 3. 技能系统
+
+#### 技能1: 灵魂冲击 (Soul Shock)
+- **按键**: Q
+- **CD**: 10秒
+- **效果**: 以玩家为中心,释放灵魂波动
+ - 范围内怪物眩晕3秒
+ - 可以打断怪物攻击
+ - 可以触发陷阱(提前引爆)
+- **范围**: 8m(随亡灵数量增加)
+
+#### 技能2: 灵魂护盾 (Soul Shield) - 解锁
+- **解锁条件**: 收集10个亡灵
+- **按键**: 右键
+- **CD**: 15秒
+- **效果**: 生成护盾,抵挡1次伤害
+
+#### 技能3: 灵魂传送 (Soul Teleport) - 解锁
+- **解锁条件**: 收集20个亡灵
+- **按键**: 双击空格
+- **CD**: 20秒
+- **效果**: 短距离传送(10m内)
+
+---
+
+## 👹 敌人系统
+
+### 1. 怪物类型
+
+基于已实现的 `EnemyAI.cs`,扩展以下怪物类型:
+
+#### 游荡者 (Wanderer)
+- **行为**: 在固定路径巡逻
+- **视野**: 15m(已实现maxSightDistance)
+- **速度**: 3m/s
+- **特点**: 被铃声吸引(已实现BellResponding)
+- **弱点**: 移动缓慢,容易躲避
+
+#### 守卫者 (Guardian)
+- **行为**: 站岗不动,看到玩家追击
+- **视野**: 20m
+- **速度**: 4m/s
+- **特点**: 攻击范围广,伤害高
+- **弱点**: 只能直线攻击,可以绕柱躲避
+
+#### 猎手 (Hunter)
+- **行为**: 快速追击,会预判玩家位置
+- **视野**: 25m
+- **速度**: 6m/s
+- **特点**: 会呼叫其他怪物
+- **弱点**: 血量低,可以被灵魂冲击击杀
+
+#### Boss: 暗影领主 (Shadow Lord)
+- **行为**: 多阶段战斗
+- **视野**: 全图
+- **特殊能力**:
+ - 阶段1: 召唤小怪
+ - 阶段2: 黑暗领域(缩小玩家视野)
+ - 阶段3: 灵魂锁链(减速玩家)
+
+### 2. 怪物AI增强
+
+基于现有 `EnemyAI.cs`,添加以下功能:
+
+```csharp
+// 新增状态
+private enum State
+{
+ Idle,
+ ChasingPlayer,
+ ChasingBell,
+ PatrollingBell,
+ Stunned, // 眩晕(灵魂冲击)
+ Searching, // 搜索玩家(丢失视线后)
+ Returning // 返回巡逻点
+}
+
+// 新增参数
+[Header("搜索行为")]
+[SerializeField] private float searchDuration = 5f; // 搜索时间
+[SerializeField] private float returnDistance = 10f; // 返回距离
+
+[Header("攻击行为")]
+[SerializeField] private float attackRange = 1.5f; // 攻击范围
+[SerializeField] private float attackCooldown = 2f; // 攻击CD
+[SerializeField] private int damage = 1; // 伤害值
+```
+
+**新增行为**:
+- ✅ **搜索**: 丢失玩家视线后,在附近搜索5秒
+- ✅ **返回**: 搜索失败后,返回巡逻点
+- ✅ **攻击**: 靠近玩家时发动攻击
+- ✅ **眩晕**: 被灵魂冲击击中后眩晕3秒
+
+---
+
+## 🗺️ 关卡设计
+
+### 1. 地图系统
+
+**地图结构**: 多个迷宫地图,通过传送门切换
+
+#### 地图1: 废弃墓穴 (新手教程)
+- **大小**: 50x50m
+- **特点**: 简单迷宫,少量怪物
+- **亡灵数量**: 5个
+- **陷阱**: 地刺(固定位置)
+- **目标**: 教学基本操作
+
+#### 地图2: 幽暗森林
+- **大小**: 80x80m
+- **特点**: 复杂迷宫,视野受限
+- **亡灵数量**: 10个
+- **陷阱**: 地刺 + 飞箭
+- **新元素**: 可破坏的墙壁
+
+#### 地图3: 地下神殿
+- **大小**: 100x100m
+- **特点**: 多层结构,机关谜题
+- **亡灵数量**: 15个
+- **陷阱**: 所有陷阱 + 移动平台
+- **新元素**: 机关门(需要激活)
+
+#### 地图4: 暗影领域 (Boss战)
+- **大小**: 60x60m
+- **特点**: 开阔场地,Boss战
+- **亡灵数量**: 0(专注Boss)
+- **陷阱**: 无
+- **目标**: 击败暗影领主
+
+### 2. 陷阱系统
+
+#### 地刺 (Ground Spikes)
+```csharp
+public class GroundSpikes : MonoBehaviour
+{
+ [SerializeField] private float damage = 1f;
+ [SerializeField] private float triggerRange = 1f;
+ [SerializeField] private float cooldown = 3f;
+
+ // 触发方式: 玩家踩上
+ // 效果: 扣1颗心,短暂无敌
+}
+```
+
+#### 飞箭 (Flying Arrow)
+```csharp
+public class FlyingArrow : MonoBehaviour
+{
+ [SerializeField] private float speed = 10f;
+ [SerializeField] private float damage = 1f;
+ [SerializeField] private float lifetime = 5f;
+
+ // 触发方式: 玩家进入触发区域
+ // 效果: 从固定方向发射箭矢
+}
+```
+
+#### 落石 (Falling Rock)
+```csharp
+public class FallingRock : MonoBehaviour
+{
+ [SerializeField] private float warningTime = 1f;
+ [SerializeField] private float damage = 1f;
+ [SerializeField] private float radius = 2f;
+
+ // 触发方式: 玩家进入区域
+ // 效果: 警告1秒后落石,范围伤害
+}
+```
+
+### 3. 亡灵系统
+
+#### 亡灵类型
+
+**普通亡灵**:
+- **外观**: 半透明人形
+- **行为**: 被困在笼子/结界中
+- **收集**: 靠近后自动收入灯笼
+- **效果**: 灯笼亮度+1,铃铛范围+2m
+
+**特殊亡灵**:
+- **战士亡灵**: 提供战斗技能
+- **法师亡灵**: 提供魔法护盾
+- **盗贼亡灵**: 提供传送技能
+
+#### 亡灵数据结构
+
+```csharp
+[System.Serializable]
+public class SoulData
+{
+ public string soulName; // 亡灵名称
+ public SoulType soulType; // 类型: 普通/战士/法师/盗贼
+ public int level; // 等级
+ public float brightnessBonus; // 亮度加成
+ public float rangeBonus; // 范围加成
+ public string specialAbility; // 特殊能力
+}
+```
+
+---
+
+## 🎨 UI系统
+
+### 1. HUD (抬头显示)
+
+```
+┌─────────────────────────────────────┐
+│ ❤❤❤ 🕐 00:12:34 │
+│ │
+│ [游戏画面] │
+│ │
+│ 🔦 灯笼: ████░░ 4/6 亡灵 │
+│ ⚡ 技能: 就绪 (10s CD) │
+│ 🗺️ 地图: 废弃墓穴 │
+└─────────────────────────────────────┘
+```
+
+### 2. 灯笼UI
+
+- **图标**: 灯笼图标
+- **进度条**: 显示当前亡灵数量/容量
+- **亮度指示**: 动态光圈大小
+
+### 3. 技能UI
+
+- **图标**: 技能图标
+- **CD指示**: 灰色覆盖层 + 倒计时数字
+- **快捷键**: Q / 右键 / 双击空格
+
+### 4. 地图UI
+
+- **小地图**: 右上角显示已探索区域
+- **任务标记**: 显示亡灵位置和出口
+
+---
+
+## 💾 存档系统
+
+### 1. 存档数据
+
+```csharp
+[System.Serializable]
+public class SaveData
+{
+ public int currentMapIndex; // 当前地图索引
+ public Vector3 playerPosition; // 玩家位置
+ public int playerHealth; // 玩家生命
+ public List collectedSouls; // 收集的亡灵
+ public float lanternBrightness; // 灯笼亮度
+ public float bellRange; // 铃铛范围
+ public float skillCooldown; // 技能CD
+ public Dictionary mapProgress; // 地图进度
+}
+```
+
+### 2. 存档点
+
+- **存档水晶**: 在地图中分布
+- **自动存档**: 到达新地图时
+- **手动存档**: 在存档水晶处按F
+
+---
+
+## 🎵 音效系统
+
+### 1. 环境音效
+
+| 场景 | 音效 |
+|-----|------|
+| 墓穴 | 风声、滴水声、远处哀嚎 |
+| 森林 | 树叶沙沙声、猫头鹰叫 |
+| 神殿 | 回声、机关运转声 |
+| Boss战 | 紧张BGM、Boss咆哮 |
+
+### 2. 交互音效
+
+| 行为 | 音效 |
+|-----|------|
+| 铃铛 | 清脆铃声(已实现) |
+| 收集亡灵 | 灵魂吸收音 |
+| 技能释放 | 灵魂爆发音 |
+| 受伤 | 痛苦呻吟 |
+| 陷阱触发 | 机械触发音 |
+
+---
+
+## 📊 游戏平衡
+
+### 1. 难度曲线
+
+```
+地图1 (废弃墓穴):
+- 怪物数量: 3
+- 陷阱数量: 5
+- 亡灵数量: 5
+- 难度: ★☆☆☆☆
+
+地图2 (幽暗森林):
+- 怪物数量: 6
+- 陷阱数量: 10
+- 亡灵数量: 10
+- 难度: ★★☆☆☆
+
+地图3 (地下神殿):
+- 怪物数量: 10
+- 陷阱数量: 15
+- 亡灵数量: 15
+- 难度: ★★★☆☆
+
+地图4 (暗影领域):
+- 怪物数量: 1 (Boss)
+- 陷阱数量: 0
+- 亡灵数量: 0
+- 难度: ★★★★★
+```
+
+### 2. 资源平衡
+
+**灯笼容量**:
+- 初始: 3个亡灵
+- 地图1后: 6个亡灵
+- 地图2后: 9个亡灵
+- 地图3后: 12个亡灵
+
+**技能CD**:
+- 初始: 10秒
+- 每收集5个亡灵: -1秒
+- 最低: 5秒
+
+---
+
+## 🚀 开发优先级
+
+### Phase 1: 核心玩法 (2周)
+- ✅ 灯笼系统(照明+铃铛)- 已实现
+- ✅ Enemy AI(视觉+铃声)- 已实现
+- ⏳ 玩家移动和碰撞
+- ⏳ 亡灵收集逻辑
+
+### Phase 2: 战斗系统 (1周)
+- ⏳ 灵魂冲击技能
+- ⏳ 怪物攻击逻辑
+- ⏳ 玩家受伤和无敌帧
+
+### Phase 3: 关卡设计 (2周)
+- ⏳ 地图1: 废弃墓穴
+- ⏳ 陷阱系统(地刺、飞箭)
+- ⏳ 亡灵分布
+
+### Phase 4: UI和存档 (1周)
+- ⏳ HUD系统
+- ⏳ 存档功能
+- ⏳ 地图切换
+
+### Phase 5: 扩展内容 (2周)
+- ⏳ 地图2-4
+- ⏳ 更多怪物类型
+- ⏳ Boss战
+
+---
+
+## 🎯 下一步行动
+
+基于现有代码,建议按以下顺序开发:
+
+1. **玩家控制器增强**
+ - 添加生命值系统
+ - 添加技能系统(灵魂冲击)
+ - 添加灯笼升级逻辑
+
+2. **亡灵系统**
+ - 创建亡灵预制体
+ - 实现收集逻辑
+ - 实现灯笼亮度动态调整
+
+3. **陷阱系统**
+ - 创建地刺预制体
+ - 创建飞箭预制体
+ - 实现陷阱触发逻辑
+
+4. **地图系统**
+ - 创建地图1(废弃墓穴)
+ - 实现地图切换逻辑
+ - 添加传送门
+
+5. **UI系统**
+ - 创建HUD
+ - 添加灯笼和技能UI
+ - 添加小地图
+
+---
+
+这个设计充分利用了你已经实现的功能:
+- ✅ 黑暗遮罩系统 (LightMaskSystem)
+- ✅ 回声系统 (EchoSystem)
+- ✅ Enemy AI (EnemyAI.cs)
+- ✅ Y-Sort排序
+- ✅ 地面裁剪Shader
+- ✅ 2.5D摄像机系统
+
+需要我帮你实现哪个部分?
\ No newline at end of file
diff --git a/unity/Assets/Light/shaders/IndianOcean_DarknessOverlay.mat b/unity/Assets/Light/shaders/IndianOcean_DarknessOverlay.mat
index e84c689..2abee3a 100644
--- a/unity/Assets/Light/shaders/IndianOcean_DarknessOverlay.mat
+++ b/unity/Assets/Light/shaders/IndianOcean_DarknessOverlay.mat
@@ -30,8 +30,8 @@ Material:
- _EchoIntensity: 0
- _EchoRadius: 39.41617
- _EchoWidth: 2.5
- - _LightSoftness: 0.5
- - _MinBrightness: 1
+ - _LightSoftness: 1
+ - _MinBrightness: 0
m_Colors:
- _DarknessColor: {r: 0.01, g: 0.01, b: 0.02, a: 1}
- _EchoCenter: {r: -2.4399998, g: -1.5000057, b: 0, a: 0}
diff --git a/unity/Assets/Scenes/Test.unity b/unity/Assets/Scenes/Test.unity
index 1d91876..cbfa213 100644
--- a/unity/Assets/Scenes/Test.unity
+++ b/unity/Assets/Scenes/Test.unity
@@ -155,10 +155,10 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
darknessMaterial: {fileID: 2100000, guid: 6dd18d2379aff3040813ab8005b1898a, type: 2}
- debugShowAll: 1
+ debugShowAll: 0
minBrightness: 0
darknessColor: {r: 0.01, g: 0.01, b: 0.02, a: 1}
- lightSoftness: 0.5
+ lightSoftness: 1
followCamera: 1
maskPlane: {fileID: 338266643}
maskOffset: {x: 0, y: 0, z: 0}
@@ -370,6 +370,94 @@ Transform:
m_CorrespondingSourceObject: {fileID: 111467382636961109, guid: 36e05f3dfaa89e0429646e51bf9a5942, type: 3}
m_PrefabInstance: {fileID: 553179492}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &103278116
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 103278117}
+ - component: {fileID: 103278118}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_grass 1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &103278117
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 103278116}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 803224828}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &103278118
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 103278116}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 12133eed98f4df042933673b1b98b8f7, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.34, y: 1.67}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!4 &166849993 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 435539791518907074, guid: 559314d2eb0483149908bafda142bcd7, type: 3}
@@ -405,7 +493,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3732617863691343031, guid: caf051d43a1fd9344a29f0c7376bbf5f, type: 3}
propertyPath: m_LocalPosition.x
- value: 0
+ value: 6.49
objectReference: {fileID: 0}
- target: {fileID: 3732617863691343031, guid: caf051d43a1fd9344a29f0c7376bbf5f, type: 3}
propertyPath: m_LocalPosition.y
@@ -413,7 +501,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3732617863691343031, guid: caf051d43a1fd9344a29f0c7376bbf5f, type: 3}
propertyPath: m_LocalPosition.z
- value: 0
+ value: -3.88
objectReference: {fileID: 0}
- target: {fileID: 3732617863691343031, guid: caf051d43a1fd9344a29f0c7376bbf5f, type: 3}
propertyPath: m_LocalRotation.w
@@ -463,6 +551,94 @@ PrefabInstance:
insertIndex: -1
addedObject: {fileID: 1076502989}
m_SourcePrefab: {fileID: 100100000, guid: caf051d43a1fd9344a29f0c7376bbf5f, type: 3}
+--- !u!1 &206388671
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 206388672}
+ - component: {fileID: 206388673}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_grass3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &206388672
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 206388671}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1423649274}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &206388673
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 206388671}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: d2289c47948a3cc40bd1d82676391b50, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.45, y: 1.45}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &255691864
GameObject:
m_ObjectHideFlags: 0
@@ -539,6 +715,94 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 255691864}
m_CullTransparentMesh: 1
+--- !u!1 &301024336
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 301024337}
+ - component: {fileID: 301024338}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_tree5
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &301024337
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 301024336}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1933741658}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &301024338
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 301024336}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 9bf1f9d2c7fd7cd44895557e0279a45e, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 4.8, y: 5.53}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &330585543
GameObject:
m_ObjectHideFlags: 0
@@ -748,7 +1012,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 3692847375105459094, guid: f1a2dffb50cd5164b9e24445ba50703f, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 2027920623}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f1a2dffb50cd5164b9e24445ba50703f, type: 3}
--- !u!1 &338266639
@@ -885,6 +1152,94 @@ MonoBehaviour:
m_EditorClassIdentifier:
enemyPrefab: {fileID: 2150025513644625521, guid: 451fa6a449d47ab46bc71e9749ee8c1b, type: 3}
spawnOnStart: 1
+--- !u!1 &406821550
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 406821551}
+ - component: {fileID: 406821552}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_cloud1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &406821551
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 406821550}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 890623800}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &406821552
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 406821550}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 4277e7d03e5e19b40a79d382ef5e74ac, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 5.18, y: 1.69}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &410087039
GameObject:
m_ObjectHideFlags: 0
@@ -1184,6 +1539,94 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &482428728
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 482428729}
+ - component: {fileID: 482428730}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_cloud2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &482428729
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 482428728}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 864875300}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &482428730
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 482428728}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 7c028bc155e1b5b41b77afe8bb94c94a, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 10.77, y: 2.56}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &505134147
GameObject:
m_ObjectHideFlags: 0
@@ -1282,7 +1725,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 111467382636961109, guid: 36e05f3dfaa89e0429646e51bf9a5942, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 594527021}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 36e05f3dfaa89e0429646e51bf9a5942, type: 3}
--- !u!4 &553627908 stripped
@@ -1290,6 +1736,182 @@ Transform:
m_CorrespondingSourceObject: {fileID: 8166008526582623248, guid: 73a2a99f54ebb774ca548dd34e6efeb7, type: 3}
m_PrefabInstance: {fileID: 1802289130}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &563108171
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 563108172}
+ - component: {fileID: 563108173}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_Ground
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &563108172
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 563108171}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 635639817}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &563108173
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 563108171}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10000
+ m_Sprite: {fileID: 21300000, guid: 8c5b0beb4d21ae9489f7c63e2d3c4544, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 20.48, y: 11.52}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &594527020
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 594527021}
+ - component: {fileID: 594527022}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_tree6
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &594527021
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 594527020}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 85738763}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &594527022
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 594527020}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 9bf1f9d2c7fd7cd44895557e0279a45e, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 4.8, y: 5.53}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1001 &599182365
PrefabInstance:
m_ObjectHideFlags: 0
@@ -1344,7 +1966,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 5814446477050245766, guid: f6b1d68e60ce8cc4caedf08fb0021021, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 833892553}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f6b1d68e60ce8cc4caedf08fb0021021, type: 3}
--- !u!1 &609157175
@@ -1442,6 +2067,94 @@ Transform:
- {fileID: 85738763}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &628381306
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 628381307}
+ - component: {fileID: 628381308}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_tree2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &628381307
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 628381306}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 433375058}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &628381308
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 628381306}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 0f2c9d2b1f1f3c04791839fee7a95be6, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 2.24, y: 1.83}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &635639815
GameObject:
m_ObjectHideFlags: 0
@@ -1527,7 +2240,8 @@ Transform:
m_LocalPosition: {x: 0, y: 0.58, z: 2.6}
m_LocalScale: {x: 5, y: 5, z: 5}
m_ConstrainProportionsScale: 1
- m_Children: []
+ m_Children:
+ - {fileID: 563108172}
m_Father: {fileID: 505134148}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!1 &713509613
@@ -1660,7 +2374,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 2950027222865506266, guid: ec18bd54928b0e84e9292db803d64592, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 898167549}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ec18bd54928b0e84e9292db803d64592, type: 3}
--- !u!4 &803224828 stripped
@@ -1722,9 +2439,188 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 8451410411389343811, guid: 3b47d748441aeb64da7d88325a75f1b7, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 406821551}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3b47d748441aeb64da7d88325a75f1b7, type: 3}
+--- !u!1 &833892552
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 833892553}
+ - component: {fileID: 833892554}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_stone3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &833892553
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 833892552}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1579469484}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &833892554
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 833892552}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: a2f5182c11de6794b961bc286acd72ea, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 3.08, y: 3.13}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &852010417
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 852010418}
+ - component: {fileID: 852010419}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_stone1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &852010418
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 852010417}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 553627908}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &852010419
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 852010417}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: a2f5182c11de6794b961bc286acd72ea, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 3.08, y: 3.13}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!4 &864875300 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7110582839246585995, guid: e0cf2978f91f03b4cb5cddc77ca6187e, type: 3}
@@ -1735,6 +2631,94 @@ Transform:
m_CorrespondingSourceObject: {fileID: 8451410411389343811, guid: 3b47d748441aeb64da7d88325a75f1b7, type: 3}
m_PrefabInstance: {fileID: 817747077}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &898167548
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 898167549}
+ - component: {fileID: 898167550}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_stone2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &898167549
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 898167548}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 531502057}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &898167550
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 898167548}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 1c03c20b38891724eba7b9a59b31ad8c, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 2.55, y: 3.3}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!4 &998595635 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4188864920815214323, guid: f87490235b302a848aefadf6ed656936, type: 3}
@@ -1794,7 +2778,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 7110582839246585995, guid: e0cf2978f91f03b4cb5cddc77ca6187e, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 482428729}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: e0cf2978f91f03b4cb5cddc77ca6187e, type: 3}
--- !u!4 &1041601018 stripped
@@ -1850,6 +2837,94 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1052525888
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 1052525889}
+ - component: {fileID: 1052525890}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_tree1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1052525889
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1052525888}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2122560117}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1052525890
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1052525888}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 9e86f261a1e9198449b0ab7510a5eb98, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 5.36, y: 4.94}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &1076502981 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7107154609808163723, guid: caf051d43a1fd9344a29f0c7376bbf5f, type: 3}
@@ -1953,7 +3028,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 9074184311345145535, guid: 264c7cedde665b843bb582448fa61da8, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 1052525889}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 264c7cedde665b843bb582448fa61da8, type: 3}
--- !u!1001 &1363611882
@@ -2010,7 +3088,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 8378786473050541634, guid: b3a123e3d40fd4640ac0f8b16a23f95f, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 206388672}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: b3a123e3d40fd4640ac0f8b16a23f95f, type: 3}
--- !u!4 &1423649274 stripped
@@ -2072,9 +3153,100 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 2179621281765118607, guid: 9ec72d12b7641b546a6bb4468c24361f, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 2030316899}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9ec72d12b7641b546a6bb4468c24361f, type: 3}
+--- !u!1 &1521132970
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 1521132971}
+ - component: {fileID: 1521132972}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_tree4
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1521132971
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1521132970}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 549456128}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1521132972
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1521132970}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 233c1d1ca8a53fb4695d9142fd8b1b64, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.76, y: 2.26}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1001 &1560771471
PrefabInstance:
m_ObjectHideFlags: 0
@@ -2129,7 +3301,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 7680868130656722617, guid: c7b9040437d4deb498301bedac7ec47b, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 1521132971}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c7b9040437d4deb498301bedac7ec47b, type: 3}
--- !u!4 &1579469484 stripped
@@ -2191,7 +3366,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 435539791518907074, guid: 559314d2eb0483149908bafda142bcd7, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 2078274731}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 559314d2eb0483149908bafda142bcd7, type: 3}
--- !u!1001 &1675114689
@@ -2248,7 +3426,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 4188864920815214323, guid: f87490235b302a848aefadf6ed656936, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 2124427142}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: f87490235b302a848aefadf6ed656936, type: 3}
--- !u!1001 &1802289130
@@ -2305,9 +3486,100 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 8166008526582623248, guid: 73a2a99f54ebb774ca548dd34e6efeb7, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 852010418}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 73a2a99f54ebb774ca548dd34e6efeb7, type: 3}
+--- !u!1 &1854042349
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 1854042350}
+ - component: {fileID: 1854042351}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_mountain1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1854042350
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1854042349}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1133291387}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1854042351
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1854042349}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 5f3da9f816344bb41a1366586c516f97, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 9.26, y: 3.42}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1001 &1900559546
PrefabInstance:
m_ObjectHideFlags: 0
@@ -2366,7 +3638,10 @@ PrefabInstance:
objectReference: {fileID: 2100000, guid: abf013ed9ac4aee41848a097a813c8aa, type: 2}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 190315813515404266, guid: 5359bf0e13760ca4a87ad866cf0cef0d, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 301024337}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5359bf0e13760ca4a87ad866cf0cef0d, type: 3}
--- !u!4 &1933741658 stripped
@@ -2428,7 +3703,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 227561119319166384, guid: 177914d88b5fe304092b1b159fa7e5b2, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 628381307}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 177914d88b5fe304092b1b159fa7e5b2, type: 3}
--- !u!1001 &1989919787
@@ -2485,7 +3763,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 7809526185620434870, guid: d7f5615cd07bcd44f826c09640cdc009, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 1854042350}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d7f5615cd07bcd44f826c09640cdc009, type: 3}
--- !u!1001 &2009615243
@@ -2542,9 +3823,276 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
- m_AddedGameObjects: []
+ m_AddedGameObjects:
+ - targetCorrespondingSourceObject: {fileID: 8589356904109289091, guid: 27146a9438d05254b82c94868517671c, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 103278117}
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 27146a9438d05254b82c94868517671c, type: 3}
+--- !u!1 &2027920622
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 2027920623}
+ - component: {fileID: 2027920624}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_tree3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2027920623
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2027920622}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2122836383}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &2027920624
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2027920622}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 86763528f1ce12e4d8fffe200c928982, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 3.67, y: 1.58}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &2030316898
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 2030316899}
+ - component: {fileID: 2030316900}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_grass 0
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2030316899
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2030316898}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1041601018}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &2030316900
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2030316898}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: bba6a8e6c2a4a54489f9943c76d92bc2, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1.57, y: 1.47}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &2078274730
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 2078274731}
+ - component: {fileID: 2078274732}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_grass2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2078274731
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2078274730}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 166849993}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &2078274732
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2078274730}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: cf99a9d4aa5abf743a6768b519fabf93, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 0.98, y: 1.73}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1 &2116328956
GameObject:
m_ObjectHideFlags: 0
@@ -2665,6 +4213,94 @@ Transform:
m_CorrespondingSourceObject: {fileID: 3692847375105459094, guid: f1a2dffb50cd5164b9e24445ba50703f, type: 3}
m_PrefabInstance: {fileID: 331582241}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &2124427141
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 7
+ m_Component:
+ - component: {fileID: 2124427142}
+ - component: {fileID: 2124427143}
+ m_Layer: 0
+ m_HasEditorInfo: 1
+ m_Name: EchoOutline_groot1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2124427142
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124427141}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 998595635}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &2124427143
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124427141}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_virtualGeometry: 0
+ m_virtualGeometryShadow: 0
+ m_ShadingRate: 0
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 11e3d8d6a18b43a46822358d3d579298, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 10001
+ m_Sprite: {fileID: 21300000, guid: 43377e9070bef8a4bb51f528b32fb376, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 2.61, y: 2.13}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
diff --git a/unity/唤魂灯笼-前置剧情.md b/unity/唤魂灯笼-前置剧情.md
new file mode 100644
index 0000000..875fdc5
--- /dev/null
+++ b/unity/唤魂灯笼-前置剧情.md
@@ -0,0 +1,355 @@
+# 唤魂灯笼 - 前置剧情
+
+## 📖 背景故事
+
+### 世界观设定
+
+在一个古老的东方小镇,人们相信**生死之间只隔着一层薄雾**。
+
+镇上有一座**百年祠堂**,祠堂深处供奉着一件神秘的器物——**唤魂灯笼**。
+
+传说中,这盏灯笼是**阴阳两界的桥梁**,能够照亮亡者归途,但也可能唤醒不该唤醒的东西。
+
+---
+
+## 👤 主角设定
+
+**姓名**: 林默(默认名,可自定义)
+**年龄**: 17岁
+**身份**: 祠堂守门人的孙子
+**性格**: 好奇心强,不信鬼神,叛逆但善良
+
+### 主角背景
+
+林默从小跟着爷爷长大,爷爷是祠堂的守门人。爷爷从小就告诫他:
+
+> "祠堂里的东西,看看就好,**绝对不能碰**。特别是那盏灯笼..."
+
+每次提到灯笼,爷爷的眼神都会变得恐惧,仿佛想起了什么可怕的事情。
+
+---
+
+## 📜 剧情章节
+
+### 第一章:禁忌的灯笼
+
+#### 场景1:祠堂日常(开场)
+
+**画面**:黄昏,古老的祠堂,香火缭绕
+
+**爷爷**(慈祥但严肃):
+> "小默,记住我说的话。祠堂里的东西都有灵性,特别是深处那盏灯笼..."
+
+**林默**(不耐烦):
+> "知道了知道了,不能碰嘛。都说了几百遍了。"
+
+**爷爷**(叹气):
+> "那灯笼...不是你想象的那样简单。它...它能听到**那边的声音**。"
+
+**林默**(心里嘀咕):
+> "又是这套说辞,什么那边的声音,封建迷信。"
+
+---
+
+#### 场景2:诡异的呼唤(夜晚)
+
+**时间**:深夜,林默在自己的房间
+
+**音效**:远处传来微弱的铃声,像是有人在摇铃
+
+**林默**(惊醒):
+> "什么声音?...好像是...铃声?"
+
+**画面**:窗外,祠堂的方向,隐约看到微弱的蓝光
+
+**林默**(内心独白):
+> "这么晚了,谁会在祠堂?...那蓝光是什么?"
+
+**铃声再次响起**,这次更清晰,仿佛在**呼唤**他
+
+**林默**(起身):
+> "不行,我得去看看..."
+
+---
+
+#### 场景3:禁忌的触碰
+
+**画面**:林默偷偷进入祠堂,来到灯笼前
+
+**灯笼特写**:
+- 古铜色的灯笼,散发着幽蓝微光
+- 灯笼上刻着奇怪的符文
+- 灯笼顶部有一个**精致的开关**,像是某种机关
+
+**林默**(观察):
+> "这就是那盏灯笼...真的有蓝光...是萤火虫吗?"
+
+**音效**:铃声再次响起,这次就在灯笼里
+
+**林默**(伸手):
+> "只是看看...应该不会..."
+
+**突然**,灯笼上的符文开始发光,铃声变得急促
+
+**林默**(手颤抖):
+> "怎么回事...我的手...不受控制..."
+
+**画面**:林默的手不由自主地伸向开关
+
+**爷爷的声音**(回忆):
+> "绝对不能碰!特别是那个开关!"
+
+**林默**(挣扎):
+> "不...我不能..."
+
+**但是**,铃声越来越响,仿佛在**哀求**,仿佛在**呼唤**
+
+**林默**(内心):
+> "是谁...在叫我?"
+
+---
+
+#### 场景4:开关按下
+
+**画面**:慢动作,林默的手指触碰到开关
+
+**音效**:清脆的"咔哒"声
+
+**瞬间**:
+- 灯笼爆发出强烈的蓝光
+- 整个祠堂开始震动
+- 符文全部亮起,形成诡异的图案
+- 林默被蓝光吞没
+
+**林默**(惊恐):
+> "不——!"
+
+**画面**:白光闪过,祠堂空无一人,灯笼静静燃烧
+
+---
+
+### 第二章:亡者的世界
+
+#### 场景5:醒来
+
+**画面**:林默睁开眼睛,发现自己躺在一片荒芜的土地上
+
+**环境**:
+- 天空是暗紫色的,没有太阳
+- 四周是破败的建筑,像是废弃的小镇
+- 空气中飘着淡淡的雾气
+- 远处传来哀嚎声
+
+**林默**(起身,环顾):
+> "这是...哪里?我怎么会在这里?"
+
+**低头一看**:唤魂灯笼就在身边,散发着微弱的光
+
+**林默**(拿起灯笼):
+> "灯笼...也跟着我来了?"
+
+**突然**,灯笼里传出微弱的声音
+
+**声音**(空灵,像是很多人叠加):
+> "救...救救我们..."
+
+**林默**(惊恐):
+> "谁?!谁在说话?"
+
+**声音**:
+> "我们...被困在这里...灯笼...能救我们..."
+
+**林默**:
+> "你们是谁?这是哪里?"
+
+**声音**:
+> "这里是**亡者的世界**...我们都是迷失的灵魂...只有灯笼能带我们出去..."
+
+---
+
+#### 场景6:第一个亡灵
+
+**画面**:一个半透明的人影出现在林默面前
+
+**亡灵**(老者,慈祥):
+> "孩子...你不该来的..."
+
+**林默**:
+> "老爷爷,你知道怎么出去吗?"
+
+**亡灵**(叹气):
+> "你按下了灯笼的开关,打开了**阴阳之门**。现在,你被困在**中间地带**了。"
+
+**林默**:
+> "中间地带?"
+
+**亡灵**:
+> "生死之间的缝隙。我们在这里徘徊了很久...无法安息,也无法回去。"
+
+**林默**(看着灯笼):
+> "那这个灯笼..."
+
+**亡灵**:
+> "它是**引路之灯**。被你唤醒后,它能照亮我们的道路,也能...收集我们的灵魂。"
+
+**林默**:
+> "收集灵魂?"
+
+**亡灵**:
+> "把我们收入灯笼,带我们离开这里。灯笼会变得更亮,铃铛会传得更远..."
+
+**林默**:
+> "但是...为什么要帮我?"
+
+**亡灵**(微笑):
+> "因为你是**被选中的人**。只有活人的手,才能拿起唤魂灯笼。"
+
+---
+
+#### 场景7:使命
+
+**亡灵**(严肃):
+> "孩子,听我说。这个世界很危险..."
+
+**画面**:远处,黑影在游荡
+
+**亡灵**:
+> "那些是**迷失者**,曾经也是灵魂,但已经失去了理智。它们会被铃声吸引,攻击一切活物。"
+
+**林默**(握紧灯笼):
+> "那我..."
+
+**亡灵**:
+> "你有两个选择:
+> 1. 找到**回去的门**,独自离开
+> 2. 用灯笼**收集我们**,带我们一起走"
+
+**林默**:
+> "收集你们...会怎样?"
+
+**亡灵**:
+> "灯笼会更亮,你能看得更远。我们...也能安息。"
+
+**林默**(坚定):
+> "我带你们走。"
+
+**亡灵**(感动):
+> "谢谢你...但是记住,**不要滥用铃铛**。每次摇铃,都会吸引那些迷失者..."
+
+**林默**:
+> "我明白了。"
+
+**亡灵**(消散):
+> "去吧...沿着灯笼的光...找到其他灵魂..."
+
+---
+
+#### 场景8:开始冒险
+
+**画面**:林默提起灯笼,环顾四周
+
+**灯笼**:发出温暖的蓝光,照亮周围5米的范围
+
+**林默**(内心独白):
+> "爷爷说得对...这灯笼真的能听到那边的声音。"
+
+**林默**(看着灯笼):
+> "既然我按下了开关...就要负责到底。"
+
+**林默**(摇动灯笼):
+> "叮铃——"
+
+**音效**:清脆的铃声在空旷的世界中回荡
+
+**画面**:远处,几个半透明的人影开始向林默移动
+
+**林默**(微笑):
+> "来吧...我带你们回家。"
+
+**画面**:镜头拉远,林默提着灯笼,走向黑暗
+
+**字幕**:
+> **唤魂灯笼**
+>
+> *每一个灵魂,都值得被照亮*
+
+---
+
+## 🎭 剧情要点总结
+
+### 核心情感
+
+1. **好奇心 vs 禁忌**:主角因为好奇心违背了爷爷的警告
+2. **责任与救赎**:既然造成了后果,就要承担责任
+3. **孤独与陪伴**:从独自冒险到带领一群灵魂
+
+### 悬念设置
+
+1. **爷爷的秘密**:爷爷为什么那么害怕灯笼?他过去经历过什么?
+2. **被选中的含义**:为什么只有活人才能拿起灯笼?
+3. **亡者的过去**:这些灵魂是怎么来到这里的?
+
+### 后续伏笔
+
+1. **爷爷的身影**:在后续地图中,可能会看到爷爷的年轻身影(回忆)
+2. **灯笼的起源**:灯笼是怎么被创造的?为什么会有开关?
+3. **回去的门**:真的存在回去的路吗?
+
+---
+
+## 🎬 过场动画建议
+
+### 开场动画(30秒)
+
+```
+镜头1: 祠堂全景,黄昏,香火缭绕 (3秒)
+镜头2: 爷爷和林默对话 (10秒)
+镜头3: 夜晚,林默被铃声惊醒 (5秒)
+镜头4: 林默进入祠堂,走向灯笼 (7秒)
+镜头5: 特写:手触碰开关 (3秒)
+镜头6: 蓝光爆发,林默消失 (2秒)
+```
+
+### 过渡动画(10秒)
+
+```
+白光闪过 → 林默睁开眼睛 → 发现自己在陌生世界 → 拿起灯笼
+```
+
+---
+
+## 💡 Gameplay结合
+
+### 剧情与玩法结合点
+
+1. **第一次摇铃**:剧情后,教程提示玩家按E摇铃
+2. **收集第一个亡灵**:剧情后,引导玩家走向第一个亡灵
+3. **遇到第一个怪物**:教程提示躲避或使用道具
+
+### 情感驱动
+
+- **灯笼变亮**:每收集一个亡灵,灯笼变亮,给玩家成就感
+- **亡灵对话**:收集亡灵后,可以听到他们的故事
+- **爷爷的回忆**:在特定地点,触发爷爷的回忆片段
+
+---
+
+## 📝 开发备注
+
+### 需要实现的剧情系统
+
+1. **对话系统**:支持角色对话和选择
+2. **过场动画**:关键剧情节点的动画演出
+3. **回忆片段**:收集特定物品触发回忆
+4. **亡灵档案**:记录收集到的亡灵故事
+
+### 剧情触发点
+
+- **场景1-4**:游戏开场自动触发
+- **场景5-8**:进入亡者世界后触发
+- **后续剧情**:通过收集亡灵和探索地图逐步解锁
+
+---
+
+*文档版本:1.0*
+*最后更新:2026年*