剥离判断逻辑到yarn

This commit is contained in:
2024-11-12 16:36:03 +08:00
parent 74eecb5e18
commit 256f6dbb12
4 changed files with 66 additions and 21 deletions
@@ -1,9 +1,23 @@
title: 检查ClueBoard
tags:
position: 43,-97
---
<<if $StartNode=="UFImage"&&$EndNode=="MemoryGrass">>
<<jump UF图像问题回答正确>>
<<elseif $StartNode=="MemoryGrass"&&$EndNode=="EyePlant">>
<<jump 记忆问题回答正确>>
<<elseif $StartNode=="手术"&&$EndNode=="solution">>
<<jump 执行手术>>
<<endif>>
===
title: UF图像问题回答正确
tags:
position: 43,-97
---
me: UF绘图使用的红色应该是在记忆“草地”的引导下调用的
me:而草地记忆出现了glitch,这是因为什么?
<<ConnectionCantBreak CanvasClueBoard>>
<<EnableQuestion CanvasClueBoard MemoryGrass>>
===
title: 记忆问题回答正确
@@ -13,12 +27,15 @@ position: 49,-314
me: 草地记忆之所以会发生glitch,是因为记忆调用了它
me: 正常来说应该是视觉去向记忆传递信息,但是现在颜色信息却传递了过来
me:明白了,是记忆反流症
<<ConnectionCantBreak CanvasClueBoard>>
<<EnableQuestion CanvasClueBoard EyePlant>>
<<AddNodeAndConnection CanvasClueBoard EyePlant 记忆反流>>
<<ConnectionCantBreak CanvasClueBoard>>
me:要怎么办呢?
me: 看起来只有做记忆-视觉阻断手术了
<<EnableQuestion CanvasClueBoard 记忆反流>>
<<AddNodeAndConnection CanvasClueBoard 记忆反流 手术>>
<<ConnectionCantBreak CanvasClueBoard>>
===
title: 执行手术
tags:
@@ -1,7 +1,7 @@
title: Start
tags:
colorID: 8
position: 242,-2373
position: 242,-2376
---
测试
//NOTE:房间界面的对话都单句写短一些(16字以内,参考CoffeeTalk),维修的可以长一些
@@ -64,12 +64,16 @@ position: 241,-2149
//是否插入过视觉产生的打孔带
<<declare $isCheckedPunchTapeFormEye=false>>
//clueboard相关
<<declare $StartNode="">>
<<declare $EndNode="">>
<<jump 引入对话>>
===
title: 引入对话
tags:
colorID: 8
position: 238,-1915
position: 244,-1783
---
//分支剧情的初始化
+38 -18
View File
@@ -15,6 +15,8 @@ public class ClueBaordNew : MonoBehaviour
public Notification ClueBoardNotification;
private Dictionary<string, Vector3> nodePositions = new Dictionary<string, Vector3>();
private Connection currentConnection;
void Start()
{
gm=GetComponent<GraphManager>();
@@ -41,30 +43,48 @@ public class ClueBaordNew : MonoBehaviour
}
[YarnCommand("CheckClueBoard")]
public void CheckConnection(Connection connection)
{
currentConnection=connection;
DialogController.Instance.SetVariable("$StartNode",connection.port0.node.ID);
DialogController.Instance.SetVariable("$EndNode",connection.port1.node.ID);
DialogController.Instance.StartDialogNode("检查ClueBoard");
if (connection.port0.node.ID == "UFImage" && connection.port1.node.ID == "MemoryGrass")
{
connection.DisableClick=false;
connection.EnableDrag=false;
DialogController.Instance.StartDialogNode("UF图像问题回答正确");
// GetNode("MemoryGrass").transform.GetChild(1).gameObject.SetActive(true);
// if (connection.port0.node.ID == "UFImage" && connection.port1.node.ID == "MemoryGrass")
// {
// connection.DisableClick=false;
// connection.EnableDrag=false;
// DialogController.Instance.StartDialogNode("UF图像问题回答正确");
// // GetNode("MemoryGrass").transform.GetChild(1).gameObject.SetActive(true);
}
if (connection.port0.node.ID == "MemoryGrass" && connection.port1.node.ID == "EyePlant")
// }
// if (connection.port0.node.ID == "MemoryGrass" && connection.port1.node.ID == "EyePlant")
// {
// connection.DisableClick=false;
// connection.EnableDrag=false;
// DialogController.Instance.StartDialogNode("记忆问题回答正确");
// }
// if (connection.port0.node.ID == "手术" && connection.port1.node.ID == "solution")
// {
// connection.DisableClick=false;
// connection.EnableDrag=false;
// DialogController.Instance.StartDialogNode("执行手术");
// }
}
[YarnCommand("ConnectionCantBreak")]
public void SetConnectionProperties()
{
if (currentConnection == null)
{
connection.DisableClick=false;
connection.EnableDrag=false;
DialogController.Instance.StartDialogNode("记忆问题回答正确");
}
if (connection.port0.node.ID == "手术" && connection.port1.node.ID == "solution")
{
connection.DisableClick=false;
connection.EnableDrag=false;
DialogController.Instance.StartDialogNode("执行手术");
Debug.LogWarning("Connection not found.");
return;
}
currentConnection.DisableClick=false;
currentConnection.EnableDrag=false;
currentConnection=null;
}
@@ -118,7 +118,11 @@ namespace AibisDream
}
public void StartDialogNode(string nodeName)
{
dialogueRunner.StartDialogue(nodeName);
if(CheckIfNodeExistInCurrentYarnProject(nodeName))
{
dialogueRunner.StartDialogue(nodeName);
}
}
public bool CheckIfNodeExistInCurrentYarnProject(string nodeName)