Day1 Day2 ClueBoard完成

This commit is contained in:
2024-11-14 05:31:06 +08:00
parent 0fdef67570
commit 6ac5ffb18b
12 changed files with 4130 additions and 211 deletions
File diff suppressed because it is too large Load Diff
@@ -39,12 +39,11 @@ me: 总之,针对“记忆反流” ,机体医学已知的应对方案是…
<<ConnectionCantBreak CanvasClueBoard>>
<<EnableQuestion CanvasClueBoard EyePlant>>
<<AddNode CanvasClueBoard 记忆反流>>
<<AddNodeConnection CanvasClueBoard EyePlant 1 endNode 记忆反流 0>>
<<AddNodeConnection CanvasClueBoard EyePlant 2 记忆反流 0>>
<<ConnectionCantBreak CanvasClueBoard>>
<<EnableQuestion CanvasClueBoard 记忆反流>>
<<AddNode CanvasClueBoard 手术>>
<<AddNodeConnection CanvasClueBoard EyePlant 1 endNode 记忆反流 0>>
<<AddNodeConnection CanvasClueBoard 记忆反流 1 手术 0>>
<<AddNodeConnection CanvasClueBoard 记忆反流 3 手术 0>>
<<ConnectionCantBreak CanvasClueBoard>>
===
title: 执行手术
@@ -3,6 +3,7 @@ tags:
colorID: 8
position: 242,-2378
---
//<<OpenClueBoard ClueBoard>>
<<jump 诊断初始化>>
<<fade_in 1>>
本demo为早期验证版本,其中文本,交互,画面,声音均为过程版
@@ -284,6 +285,7 @@ position: 240,-1440
---
<<fade_in 0.5>>
<<load_scene 佩佩视觉模块>>
<<NodeInit CanvasClueBoard 1>>
<<SetExternalError ViewManager MemoryView true>>
// <<OpenClueBoard ClueBoard>>
//<<Set_ViewVisualState ViewManager "ColorView" 1>>
@@ -2,6 +2,7 @@
tags:
position: -95,-631
---
触发了
<<if $StartNode=="UF发热"&&$EndNode=="UF内部进程">>
<<jump UF发热原因找到>>
<<elseif $StartNode=="UFImage2"&&$EndNode=="UF内部进程">>
@@ -27,14 +28,14 @@ position: -204,-329
me: 视觉的错误都是由这个神秘的打孔带引起的
<<if $StartNode=="EyePlant2">>
<<ConnectionCantBreak CanvasClueBoard>>
<<AddNodeConnection CanvasClueBoard EyeSky2 2 UF打孔带 0>>
<<AddNodeConnection CanvasClueBoard EyePlant2 2 UF打孔带 0>>
<<AddNodeConnection CanvasClueBoard EyeSky2 2 UF打孔带 3>>
<<AddNodeConnection CanvasClueBoard EyePlant2 2 UF打孔带 3>>
<<elseif $StartNode=="EyeSky2">>
<<AddNodeConnection CanvasClueBoard EyePoster2 2 UF打孔带 0>>
<<AddNodeConnection CanvasClueBoard EyePlant2 2 UF打孔带 0>>
<<AddNodeConnection CanvasClueBoard EyePoster2 2 UF打孔带 3>>
<<AddNodeConnection CanvasClueBoard EyePlant2 2 UF打孔带 3>>
<<elseif $StartNode=="EyePoster2">>
<<AddNodeConnection CanvasClueBoard EyeSky2 2 UF打孔带 0>>
<<AddNodeConnection CanvasClueBoard EyePlant2 2 UF打孔带 0>>
<<AddNodeConnection CanvasClueBoard EyeSky2 2 UF打孔带 3>>
<<AddNodeConnection CanvasClueBoard EyePlant2 2 UF打孔带 3>>
<<endif>>
===
title: 试图安装UF中的晶圆
@@ -55,12 +56,7 @@ position: -204,-329
me: UF发热就是因为内部的不明进程调用,UF在不停传送数据
<<ConnectionCantBreak CanvasClueBoard>>
<<set $whayHeatKnown=true>>
<<if $eyecolorKnown==true>>
me: 一切问题都在这个神秘的进程上?到底是什么呢?
<<EnableQuestion CanvasClueBoard UF内部进程>>
<<AddNode CanvasClueBoard 神秘进程>>
<<AddNodeConnection CanvasClueBoard UF内部进程 0 神秘进程 1>>
<<endif>>
<<jump 检查是否明白了发热和视觉错误的原因>>
===
title: 视觉黑白原因找到
tags:
@@ -95,7 +91,7 @@ position: 311,-334
me: 打孔带是UF从记忆中获取的,再传递给视觉
me: 这就是佩佩眼睛成像错误的原因吧
<<ConnectionCantBreak CanvasClueBoard>>
<<set $eyecolorKnown=true>>
<<set $whayEyeErrortKnown=true>>
<<jump 检查是否明白了发热和视觉错误的原因>>
===
@@ -103,11 +99,16 @@ title: 检查是否明白了发热和视觉错误的原因
tags:
position: 154,-41
---
<<if $whayHeatKnown==true&& $whayEyeErrortKnown==true>>
me: 一切问题都在这个神秘的进程上?到底是什么呢?
<<if $whayHeatKnown==true&&$whayEyeErrortKnown==true>>
me: 一切问题都在这个神秘的进程上?
<<EnableQuestion CanvasClueBoard UF内部进程>>
<<AddNode CanvasClueBoard 神秘进程>>
<<AddNodeConnection CanvasClueBoard UF内部进程 1 神秘进程 0>>
<<AddNodeConnection CanvasClueBoard UF内部进程 0 神秘进程 2>>
me: 一切问题都在这个神秘的进程上?到底是什么呢?
<<EnableQuestion CanvasClueBoard 神秘进程>>
<<wait 1>>
//<<jump 明白想象力>>
<<CloseClueBoard ClueBoard>>
<<jump 结论1>>
<<endif>>
===
@@ -116,32 +117,36 @@ title: 明白想象力
tags:
position: 552,-51
---
me: 现在明白了
me: 因为缺失晶圆从而看不到颜色,但是却激发了想象力
<<AddNode CanvasClueBoard 想象力>>
<<AddNodeConnection CanvasClueBoard 视觉检查黑白 1 想象力 0>>
<<AddNodeConnection CanvasClueBoard 视觉检查黑白 1 想象力 2>>
<<wait 1>>
me: 能够拿得到颜色的地方只有记忆了,但是和视觉的通路却被切断了
me: 于是”想象力“去借助UF来传递...
<<AddNodeConnection CanvasClueBoard 想象力 1 神秘进程 0>>
//<<AddNode CanvasClueBoard 神秘进程>>
<<AddNodeConnection CanvasClueBoard 神秘进程 0 想象力 1 >>
me: 不是什么神秘进程...是...想象力导致了这一切
me: 发热也好,眼睛痛也好,其实是一种...
me: 一种幻痛
me: 因为失去了颜色而渴望颜色的幻痛
<<EnableQuestion CanvasClueBoard 想象力>>
<<AddNode CanvasClueBoard 幻痛>>
<<AddNodeConnection CanvasClueBoard 想象力 1 幻痛 0>>
<<AddNodeConnection CanvasClueBoard 想象力 0 幻痛 2>>
me: 对于这种幻痛,只有两种处理办法
me: 第一,彻底去除色彩
me: 对佩佩所渴求的记忆中的颜色,进行抹除
me: 不再有所渴求,也就不再会痛了
<<AddNode CanvasClueBoard 色彩抹除>>
<<AddNodeConnection CanvasClueBoard 幻痛 1 色彩抹除 0>>
<<AddNodeConnection CanvasClueBoard 幻痛 1 色彩抹除 2>>
<<set $memoryColorFadeKnown=true>>
///这里怎么理解UF里的色觉?UF有色觉为么还要调用记忆的色彩?引导?感觉有点难理解,记忆抹除为什么不影响UF?就算不影响,需要担心UF的色彩泄露么
me: 第二,让佩佩能看到颜色
me: 如果能看到颜色,当然也就不存在幻痛了
me: 如果能找到佩佩缺失的晶圆装上,那么应该就可以了
<<AddNode CanvasClueBoard 安装晶圆>>
<<AddNodeConnection CanvasClueBoard 幻痛 1 安装晶圆 0>>
<<AddNodeConnection CanvasClueBoard 幻痛 0 安装晶圆 2>>
<<EnableQuestion CanvasClueBoard 安装晶圆>>
me: 晶圆是严格管制品,外部不可能找得到,晶圆从何而来呢?
//<<CloseClueBoard ClueBoard>>
//<<jump 结论2>>
@@ -154,6 +159,7 @@ position: 154,-41
me:只有这一种方法了么...
->只能这样了
me:我得和佩佩谈谈
<<CloseClueBoard ClueBoard>>
<<jump 结论2>>
->再想想
me:我再想想
@@ -3,10 +3,11 @@ tags:
colorID: 8
position: 240,-2240
---
//<<OpenClueBoard ClueBoard>>
新闻:balabalabala
<<indoor>>
//<<jump VarsInit>>
<<jump 诊断初始化>>
// <<indoor>>
<<jump VarsInit>>
//<<jump 诊断初始化>>
===
title: VarsInit
tags:
@@ -87,6 +88,14 @@ position: 240,-2040
<<declare $UFInnerSeen=false>>
<<declare $StartNode="">>
<<declare $EndNode="">>
<<declare $whayHeatKnown=false>>
<<declare $whayEyeErrortKnown=false>>
<<declare $findChipFromForClueBoard=false>>
<<declare $memoryColorFadeKnown=false>>
<<jump 引入对话>>
===
title: 引入对话
@@ -111,6 +120,7 @@ position: 239,-1328
<<load_scene 佩佩视觉模块>>
<<SetReapirState ToolManager UF盖子 false>>
<<SetInstall ToolManager 色觉 false>>
<<NodeInit CanvasClueBoard 2 >>
<<fade_out 1>>
<<SetHeat Plug 1>>
//<<OpenClueBoard ClueBoard>>
@@ -229,7 +239,7 @@ position: -162,-616
title: 结论1
tags:
colorID: 8
position: -156,-398
position: -158,-420
---
//现在关于切换场景的数据保存还没有完成,建议先不切场景
<<CloseClueBoard ClueBoard>>
@@ -417,6 +427,8 @@ position: 2966,-544
【佩佩说她很痛】
<<elseif $eyeTargetTriggerCount == 2>>
【佩佩说她很痛】
<<elseif $eyeTargetTriggerCount == 3>>
【佩佩说她很痛】
<<set $isFinishedEyeCheck=-1>>
//<<jump 主维修界面>>
<<endif>>
@@ -592,7 +604,7 @@ position: 1018,-1538
title: EnterRepairMode
tags: 待编辑
colorID: 8
position: -496,-1391
position: -511,-1381
---
<<if $feverCount==1&&$gameStage==1>>
me: 嗯?这里有警告?不让拆?
@@ -1345,7 +1357,7 @@ me: 只有这样了…先把热源给移除了。
title: 检查UF固定螺丝移除
tags:
colorID: 8
position: -157,-26
position: -145,-47
---
【移除了所有UF的螺丝,取下UF,发热停止了】
<<set $feverCount=4>>
@@ -1370,12 +1382,12 @@ me:我们出去吧,让她在这里休息
title: Clueboard2
tags:
colorID: 1
position: -160,160
position: -157,154
---
<<wait 1>>
<<OpenClueBoard ClueBoard>>
【得出两种处理方案:安装晶圆和记忆色彩初始化】
<<jump 结论2>>
//【得出两种处理方案:安装晶圆和记忆色彩初始化】
//<<jump 结论2>>
===
title: 结论2
tags:
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 72bc754046dc91748aaa37391d695801
guid: 8cba3ebad5f1b7a4ca781f90f5bc2ddd
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2df16409ffe782a459110a3fd41a1f1e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,12 @@
{
"projectFileVersion": 2,
"sourceFiles": [
"*.yarn"
],
"excludeFiles": [
"**/*~/*"
],
"localisation": {},
"baseLanguage": "zh-CHS",
"compilerOptions": {}
}
@@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 72bc754046dc91748aaa37391d695801
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 053561912b1654d80a424bb0696a74ae, type: 3}
useAddressableAssets: 0
UseUnityLocalisationSystem: 0
unityLocalisationStringTableCollection: {instanceID: 0}
File diff suppressed because it is too large Load Diff
+37 -8
View File
@@ -6,6 +6,7 @@ using MeadowGames.UINodeConnect4;
using UnityEngine;
using Yarn.Unity;
using RainbowArt.CleanFlatUI;
using UnityEditor.Localization.Plugins.XLIFF.V20;
public class ClueBaordNew : MonoBehaviour
{
@@ -13,19 +14,20 @@ public class ClueBaordNew : MonoBehaviour
private GraphManager gm;
public List<Node> nodeLists;
public List<Node> Day1InitnodeLists;
public List<Node> Day2InitnodeLists;
public Notification ClueBoardNotification;
private Dictionary<string, Vector3> nodePositions = new Dictionary<string, Vector3>();
//private Dictionary<string, Vector3> nodePositions = new Dictionary<string, Vector3>();
private Connection currentConnection;
private bool isTriggerDialogue=false;
private bool isTriggerDialogue=true;
void Start()
{
gm=GetComponent<GraphManager>();
gm.OnConnectionAdded += CheckConnection;
nodePositions["UFImage"] = new Vector3(-795, -263, 0);
nodePositions["memoryGrass"] = new Vector3(1, 1, 0);
nodePositions["EyePlant"] = new Vector3(2, 2, 0);
}
// Update is called once per frame
@@ -38,6 +40,26 @@ public class ClueBaordNew : MonoBehaviour
{
gm.localNodes.Find(node => node.ID == nodeID).gameObject.SetActive(isactive);
}
[YarnCommand("NodeInit")]
public void NodeInit(int day)
{
if(day==1)
{
foreach(Node node in Day1InitnodeLists)
{
node.gameObject.SetActive(true);
}
}
if(day==2)
{
foreach(Node node in Day2InitnodeLists)
{
node.gameObject.SetActive(true);
}
}
}
public Node GetNode(string nodeID)
{
@@ -97,19 +119,26 @@ public class ClueBaordNew : MonoBehaviour
currentConnection.DisableClick=false;
currentConnection.EnableDrag=false;
currentConnection=null;
currentConnection.EnableHover=false;
currentConnection.line.color=Color.green;
//currentConnection.port0.node.
//currentConnection=null;
}
[YarnCommand("AddNodeConnection")]
public void CreateConnection(string starNode,int startPort,string endNode,int endPort)
{
Vector3 pos;
Node start= GetNode(starNode);
Node end= GetNode(endNode);
Connection newConnection=start.ports[startPort].ConnectTo(end.ports[endPort]);
newConnection.DisableClick=false;
newConnection.EnableDrag=false;
gm.UnselectAllElements();
SetConnectionProperties();
newConnection.DisableClick=false;
newConnection.EnableDrag=false;
newConnection.EnableHover=false;
newConnection.line.color=Color.green;
//currentConnection=null;
}
[YarnCommand("AddNode")]
+67 -67
View File
@@ -116,105 +116,105 @@ public class MouseCursorManager : MonoBehaviour
private bool IsHoveringOverDialogueItem()
{
if (EventSystem.current.IsPointerOverGameObject())
{
PointerEventData pointerData = new PointerEventData(EventSystem.current) { position = Input.mousePosition };
var results = new List<RaycastResult>();
EventSystem.current.RaycastAll(pointerData, results);
foreach (var result in results)
{
if (result.gameObject.CompareTag("DialogueObject")) // 物体需添加 DialogueObject 标签
{
if(result.gameObject.transform.GetChild(0)!=null)
{
if(result.gameObject.transform.GetChild(0).GetComponent<Socket>().IsAvailable)
{
Debug.Log("Hover Dialogue");
return true;
// if (EventSystem.current.IsPointerOverGameObject())
// {
// PointerEventData pointerData = new PointerEventData(EventSystem.current) { position = Input.mousePosition };
// var results = new List<RaycastResult>();
// EventSystem.current.RaycastAll(pointerData, results);
// foreach (var result in results)
// {
// if (result.gameObject.CompareTag("DialogueObject")) // 物体需添加 DialogueObject 标签
// {
// if(result.gameObject.transform.GetChild(0)!=null)
// {
// if(result.gameObject.transform.GetChild(0).GetComponent<Socket>().IsAvailable)
// {
// Debug.Log("Hover Dialogue");
// return true;
}
// }
}
// }
}
// }
}
}
// }
// }
return false;
}
private bool IsHoveringOverDragItem()
{
if (EventSystem.current.IsPointerOverGameObject())
{
PointerEventData pointerData = new PointerEventData(EventSystem.current) { position = Input.mousePosition };
var results = new List<RaycastResult>();
EventSystem.current.RaycastAll(pointerData, results);
// if (EventSystem.current.IsPointerOverGameObject())
// {
// PointerEventData pointerData = new PointerEventData(EventSystem.current) { position = Input.mousePosition };
// var results = new List<RaycastResult>();
// EventSystem.current.RaycastAll(pointerData, results);
foreach (var result in results)
{
// foreach (var result in results)
// {
// If the Canvas's sortingOrder is higher than the reference sortingOrder, ignore it
// // If the Canvas's sortingOrder is higher than the reference sortingOrder, ignore it
if (result.gameObject.CompareTag("Dragable")) // 物体需添加 Dragable 标签
{
return true;
}
// if (result.gameObject.CompareTag("Dragable")) // 物体需添加 Dragable 标签
// {
// return true;
// }
}
}
// }
// }
return false;
}
// 处理点击事件
private void HandleClick()
{
if(DialogController.Instance.IsTalking)
{
return;
}
// if(DialogController.Instance.IsTalking)
// {
// return;
// }
PointerEventData pointerData = new PointerEventData(EventSystem.current) { position = Input.mousePosition };
var results = new List<RaycastResult>();
EventSystem.current.RaycastAll(pointerData, results);
// PointerEventData pointerData = new PointerEventData(EventSystem.current) { position = Input.mousePosition };
// var results = new List<RaycastResult>();
// EventSystem.current.RaycastAll(pointerData, results);
foreach (var result in results)
{
Canvas hitCanvas = result.gameObject.GetComponentInParent<Canvas>();
// foreach (var result in results)
// {
// Canvas hitCanvas = result.gameObject.GetComponentInParent<Canvas>();
if (hitCanvas != null)
{
// If the Canvas's sortingOrder is higher than the reference sortingOrder, ignore it
if (hitCanvas.renderMode==RenderMode.ScreenSpaceOverlay)
{
Debug.Log("Raycast hit an object with a higher sortingOrder that should block the raycast");
// You can add additional logic here to block interaction or trigger events
//return false; // Stop further raycasting if it should be blocked
}
else
{
if (result.gameObject.CompareTag("DialogueObject"))
{
// if (hitCanvas != null)
// {
// // If the Canvas's sortingOrder is higher than the reference sortingOrder, ignore it
// if (hitCanvas.renderMode==RenderMode.ScreenSpaceOverlay)
// {
// Debug.Log("Raycast hit an object with a higher sortingOrder that should block the raycast");
// // You can add additional logic here to block interaction or trigger events
// //return false; // Stop further raycasting if it should be blocked
// }
// else
// {
// if (result.gameObject.CompareTag("DialogueObject"))
// {
if(result.gameObject.transform.GetChild(0).GetComponent<Socket>().IsAvailable)
{
string dialogueNode =result.gameObject.name+"Dialogue"; // 假设物体名是对话节点
DialogController.Instance.StartDialogNode(dialogueNode);
return;
}
}
}
}
// if(result.gameObject.transform.GetChild(0).GetComponent<Socket>().IsAvailable)
// {
// string dialogueNode =result.gameObject.name+"Dialogue"; // 假设物体名是对话节点
// DialogController.Instance.StartDialogNode(dialogueNode);
// return;
// }
// }
// }
// }
}
// }
}