WEBVTT

1
00:00:00.000 --> 00:00:09.986
本课用一个独立规则：调查记录之后，练习出口允许通过，不沿用其他课程的通关事实。

2
00:00:09.986 --> 00:00:13.594
范围检测知道玩家靠近没有；

3
00:00:13.594 --> 00:00:17.317
记录物件提供调查事件与内容；

4
00:00:17.317 --> 00:00:20.320
房间控制者处理规则；

5
00:00:20.320 --> 00:00:22.634
界面负责显示。

6
00:00:22.634 --> 00:00:33.010
节点像不同职责的部件，但不等于一个物件只能对应一个节点，桌子可能含图片、范围与碰撞。

7
00:00:33.010 --> 00:00:37.108
我们先画职责，不急着造大框架。

8
00:00:37.108 --> 00:00:42.986
本课参照戈多四点七文档，仍需在独立场景验证。

9
00:00:42.986 --> 00:00:50.638
玩家走进桌边，范围检测可以把桌子加入候选，并显示调查提示。

10
00:00:50.638 --> 00:00:54.456
但这时不要立刻记成读过记录。

11
00:00:54.456 --> 00:01:00.738
只有按下调查，而且候选仍然有效，才执行调查。

12
00:01:00.738 --> 00:01:08.250
离开范围后，应清除候选与提示，否则隔着房间也能点到旧物件。

13
00:01:08.250 --> 00:01:16.346
两个物件范围重叠时，还需要明确选谁，例如优先面前且最近的一项。

14
00:01:16.346 --> 00:01:21.954
先保证一次输入对应一个对象，再谈漂亮面板；

15
00:01:21.954 --> 00:01:26.777
不然文字再精美，也可能显示错内容。

16
00:01:26.777 --> 00:01:34.923
把信号想成一次通知：记录被调查了，已经连接的接收者执行各自回调。

17
00:01:34.923 --> 00:01:37.337
类比到这里就够了；

18
00:01:37.337 --> 00:01:44.469
它不是会保存历史、等待听众上线的信箱，也不是后台线程。

19
00:01:44.469 --> 00:01:51.620
连接要在事件前准备好，避免编辑器和代码重复接同一处理。

20
00:01:51.620 --> 00:01:57.972
调查物不必知道出口的完整节点路径，可以由房间协调。

21
00:01:57.972 --> 00:02:06.858
启动时的门状态也要主动刷新，不能等一个还没发生的调查信号来告诉它初始样子。

22
00:02:06.858 --> 00:02:09.382
接收调查事件后，

23
00:02:09.382 --> 00:02:14.149
房间先把记录已经调查这个事实写下来，

24
00:02:14.149 --> 00:02:17.658
再根据它更新出口和提示，

25
00:02:17.658 --> 00:02:20.651
最后给出可理解的文字。

26
00:02:20.651 --> 00:02:28.958
不要让面板自己存一份门已开，门又存一份任务完成，双方很容易不一致。

27
00:02:28.958 --> 00:02:37.938
练习把已调查作为通过条件，只是我们定的规则，并不证明玩家真的理解了内容。

28
00:02:37.938 --> 00:02:44.276
若正式谜题需要确认理解，应另设有意义的回答或操作。

29
00:02:44.276 --> 00:02:50.253
把规则含义说清，比布尔变量取个漂亮名字更重要。

30
00:02:50.253 --> 00:02:58.784
如果唯一的已调查信息，就是面板上显示着已读两个字，关闭面板后会怎样？

31
00:02:58.784 --> 00:03:05.801
重新创建的面板可能恢复默认文字，门也可能不知道该不该开。

32
00:03:05.801 --> 00:03:09.969
现在暂停，选择更可靠的做法。

33
00:03:09.969 --> 00:03:16.666
让事实由确定的状态持有者管理，面板每次打开都读取它。

34
00:03:16.666 --> 00:03:24.642
这里并不是要求所有数据都放全局，而是问清谁活得比这块面板更久。

35
00:03:24.642 --> 00:03:32.419
文字、动画和按钮都可以重建，不能靠猜它们的外观恢复游戏进度。

36
00:03:32.419 --> 00:03:39.611
第一次调查把未调查改成已调查，并执行一次允许通过的变化。

37
00:03:39.611 --> 00:03:47.338
第二次调查可以再次显示记录，却不应重复发放奖励或再切一次场景。

38
00:03:47.338 --> 00:03:54.785
把这两类行为拆开：内容可回看，首次推进要检查当前事实。

39
00:03:54.785 --> 00:04:02.332
然后做一次重置，事实回到未调查时，门与提示也要重新计算。

40
00:04:02.332 --> 00:04:06.295
不要靠延迟半秒来压住重复响应；

41
00:04:06.295 --> 00:04:14.326
先检查是不是一次输入触发多次，或者同一规则在多个地方各执行了一遍。

42
00:04:14.326 --> 00:04:20.303
房间被销毁时，它自己的变量通常也随实例消失。

43
00:04:20.303 --> 00:04:28.215
若要离开再回来，先让需要保留的事实由切换期间仍存在的对象持有；

44
00:04:28.215 --> 00:04:33.692
新房间准备好后，读取事实并恢复门与提示。

45
00:04:33.692 --> 00:04:42.903
若连游戏都关闭，还需要另行写入和读取磁盘，内存里的管理对象并不能替代存档。

46
00:04:42.903 --> 00:04:49.705
恢复时也不要重播所有历史调查，否则可能再发一次奖励。

47
00:04:49.705 --> 00:04:56.122
先恢复当前样子，只有新动作发生时才处理新的事件。

48
00:04:56.122 --> 00:05:02.859
打开站内调查与状态练习，在独立场景实现这条小规则。

49
00:05:02.859 --> 00:05:12.130
测试正常调查、重复调查、先碰出口再调查，以及离开房间后返回四条路径。

50
00:05:12.130 --> 00:05:16.448
每次都看文字、门与提示是否一致；

51
00:05:16.448 --> 00:05:23.880
没有反应，就沿输入、事件、回调、事实、表现逐段查。

52
00:05:23.880 --> 00:05:29.143
记录实际结果和失败步骤，不写笼统的能跑。

53
00:05:29.143 --> 00:05:40.508
课中的箭头只是概念演示，四条路径真正运行通过，才是你这个练习的证据，仍不等于正式游戏已完成。

