增加维修场景对view状态的保存,修改yarn来测试交互选项
This commit is contained in:
@@ -7,6 +7,7 @@ using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using DG.Tweening;
|
||||
using Yarn.Unity;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class EyeTransitionManager : MonoBehaviour
|
||||
{
|
||||
@@ -26,9 +27,26 @@ public class EyeTransitionManager : MonoBehaviour
|
||||
public GameObject viewPanel; // 视图的面板
|
||||
public Button activateButton; // 视图的激活按钮(MainView除外)
|
||||
public Button returnToMainViewButton; // 视图的返回MainView按钮
|
||||
public bool isAvailable = true; // 视图是否可用
|
||||
public Socket socket;
|
||||
public ViewState viewState;
|
||||
|
||||
private bool _isAvailable = false; // 视图是否可用的私有字段
|
||||
|
||||
// 视图是否可用的公有属性
|
||||
public bool IsAvailable
|
||||
{
|
||||
get { return _isAvailable; }
|
||||
set
|
||||
{
|
||||
_isAvailable = value;
|
||||
// 当视图的可用性改变时,更新按钮的状态
|
||||
if (activateButton != null)
|
||||
{
|
||||
activateButton.interactable = value;
|
||||
activateButton.gameObject.SetActive(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 在 Unity 编辑器中配置视图(不包括MainView)
|
||||
@@ -56,9 +74,59 @@ public class EyeTransitionManager : MonoBehaviour
|
||||
|
||||
// 视图更改请求的事件
|
||||
public delegate void ViewChangeRequestedHandler(ViewState targetViewState);
|
||||
|
||||
public event ViewChangeRequestedHandler OnViewChangeRequested;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
DontDestroyOnLoad(this.gameObject);
|
||||
SceneManager.sceneUnloaded += OnSceneUnloaded;
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
SceneManager.sceneUnloaded -= OnSceneUnloaded;
|
||||
}
|
||||
|
||||
private void OnSceneUnloaded(Scene currentScene)
|
||||
{
|
||||
if (currentScene.name == "佩佩视觉模块")
|
||||
{
|
||||
SaveState();
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveState()
|
||||
{
|
||||
PlayerPrefs.SetString("CurrentViewState", currentViewState.ToString());
|
||||
|
||||
foreach (var config in viewConfigs)
|
||||
{
|
||||
PlayerPrefs.SetInt(config.viewState.ToString() + "IsAvailable", config.IsAvailable ? 1 : 0);
|
||||
}
|
||||
|
||||
PlayerPrefs.Save();
|
||||
}
|
||||
|
||||
private void LoadState()
|
||||
{
|
||||
string savedViewState = PlayerPrefs.GetString("CurrentViewState", "");
|
||||
|
||||
if (!string.IsNullOrEmpty(savedViewState))
|
||||
{
|
||||
currentViewState = (ViewState)Enum.Parse(typeof(ViewState), savedViewState);
|
||||
}
|
||||
|
||||
foreach (var config in viewConfigs)
|
||||
{
|
||||
int isAvailable = PlayerPrefs.GetInt(config.viewState.ToString() + "IsAvailable", -1);
|
||||
|
||||
if (isAvailable != -1)
|
||||
{
|
||||
config.IsAvailable = isAvailable == 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// 首先注册命令
|
||||
@@ -78,8 +146,10 @@ public class EyeTransitionManager : MonoBehaviour
|
||||
config.returnToMainViewButton.onClick.AddListener(() => StartTransition(ViewState.MainView));
|
||||
}
|
||||
// 更新按钮的可用性
|
||||
config.activateButton.interactable = config.isAvailable;
|
||||
config.activateButton.interactable = config.IsAvailable;
|
||||
config.activateButton.gameObject.SetActive(false);
|
||||
}
|
||||
LoadState();
|
||||
}
|
||||
|
||||
public void ActivateSocketChoice(YarnOption[] options)
|
||||
@@ -93,7 +163,7 @@ public class EyeTransitionManager : MonoBehaviour
|
||||
// 为Socket添加方法
|
||||
viewConfig.socket.Option = optionDic[viewConfig.viewState.ToString()];
|
||||
}
|
||||
else if (optionDic.ContainsKey(viewConfig.viewState + "Activate"))
|
||||
if (optionDic.ContainsKey(viewConfig.viewState + "Activate"))
|
||||
{
|
||||
viewConfig.activateButton.onClick.RemoveAllListeners();
|
||||
// 为激活添加方法
|
||||
@@ -163,8 +233,9 @@ public class EyeTransitionManager : MonoBehaviour
|
||||
if (!viewConfigDictionary.TryGetValue(viewState, out ViewConfig config)) return;
|
||||
|
||||
// 更新视图的可用性和激活按钮的可用性
|
||||
config.isAvailable = isAvailable;
|
||||
config.IsAvailable = isAvailable;
|
||||
config.activateButton.interactable = isAvailable;
|
||||
config.activateButton.gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
// 开始视图过渡
|
||||
|
||||
@@ -2764,7 +2764,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &254003902
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -5082,7 +5082,7 @@ GameObject:
|
||||
- component: {fileID: 594466390}
|
||||
- component: {fileID: 594466389}
|
||||
m_Layer: 5
|
||||
m_Name: FaceCanvas
|
||||
m_Name: DeepCanvas
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -7659,7 +7659,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!120 &863689908
|
||||
LineRenderer:
|
||||
serializedVersion: 2
|
||||
@@ -9740,7 +9740,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!114 &1182811776
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -14733,7 +14733,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &1700390217
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -19520,7 +19520,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!224 &2126911510
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -6,19 +6,21 @@ title: Start
|
||||
tags:
|
||||
position: 58,-1202
|
||||
---
|
||||
//<<indoor>>
|
||||
//<<CharacterInit>>
|
||||
|
||||
<<jump TV>>
|
||||
===
|
||||
title: TV
|
||||
position: 63,-958
|
||||
---
|
||||
<<switch_tv 黑屏>>
|
||||
电视: 新闻1内容
|
||||
<<switch_tv 新闻>>
|
||||
电视: 新闻2内容
|
||||
<<switch_tv 销售冠军>>
|
||||
电视: 新闻3内容
|
||||
我: 销售大赛…给机器人销售罐头?为什么呢……
|
||||
// <<switch_tv 黑屏>>
|
||||
// 电视: 新闻1内容
|
||||
// <<switch_tv 新闻>>
|
||||
// 电视: 新闻2内容
|
||||
// <<switch_tv 销售冠军>>
|
||||
// 电视: 新闻3内容
|
||||
// 我: 销售大赛…给机器人销售罐头?为什么呢……
|
||||
<<jump OutDoorTalk>>
|
||||
|
||||
===
|
||||
@@ -26,18 +28,18 @@ position: 63,-958
|
||||
title: OutDoorTalk
|
||||
position: 72,-688
|
||||
---
|
||||
英理: 就是这里了,员工诊所。身体检查一定会对你的生产效率有帮助的。
|
||||
<<indoor>>
|
||||
英理: 我不希望就因为你生病,而让我们部门的评价受到影响。
|
||||
佩佩: 我没病,组长……我会完成得很好的。相信我。我以前……
|
||||
英理: 我不在乎你之前做得有多好——我现在不想和你讨论你所说的“好的标准是什么”,那对我来说没有任何意义。
|
||||
英理: 我不知道为什么你不能理解:如果不能按公司的要求完成,你就会被回收。这是唯一的标准。
|
||||
英理: 公司花了很多资源培养你。就算你不在乎你自己,也不要让公司失望。
|
||||
佩佩: 我……
|
||||
英理: 听着,佩佩。我是在帮你。
|
||||
英理: 你的效率是整个美工组最低的,只要我想,我可以直接把你送回收。为了保住你,我承担了你难以想象的压力。
|
||||
英理: (叹气)
|
||||
英理: 做个身体检查,恢复你的效率。今晚好好休息。
|
||||
// 英理: 就是这里了,员工诊所。身体检查一定会对你的生产效率有帮助的。
|
||||
// 英理: 我不希望就因为你生病,而让我们部门的评价受到影响。
|
||||
// 佩佩: 我没病,组长……我会完成得很好的。相信我。我以前……
|
||||
// 英理: 我不在乎你之前做得有多好——我现在不想和你讨论你所说的“好的标准是什么”,那对我来说没有任何意义。
|
||||
// 英理: 我不知道为什么你不能理解:如果不能按公司的要求完成,你就会被回收。这是唯一的标准。
|
||||
// 英理: 公司花了很多资源培养你。就算你不在乎你自己,也不要让公司失望。
|
||||
// 佩佩: 我……
|
||||
// 英理: 听着,佩佩。我是在帮你。
|
||||
// 英理: 你的效率是整个美工组最低的,只要我想,我可以直接把你送回收。为了保住你,我承担了你难以想象的压力。
|
||||
// 英理: (叹气)
|
||||
// 英理: 做个身体检查,恢复你的效率。今晚好好休息。
|
||||
佩佩: 是的,组长。
|
||||
佩佩: ……
|
||||
<<jump InDoorTalk>>
|
||||
@@ -49,23 +51,23 @@ position: 74,-513
|
||||
///<<播放轻轻的敲门声>>
|
||||
我: 当然,请进吧。
|
||||
//<<character_into Peipei>>
|
||||
佩佩: ……
|
||||
佩佩: 打扰了,医生。能帮我做个检查吗?
|
||||
我: 当然没问题。美工组的佩佩,是么?
|
||||
佩佩: 是的…你怎么知道的?
|
||||
我: 无意偷听,但是你们刚才就站在我的门口。说说吧,你的身体怎么了,感觉哪里不舒服吗?
|
||||
佩佩: 倒也没有哪里不舒服……只是最近工作表现很差。
|
||||
佩佩: 我也说不出来是最近工作状态更差了,还是因为那个广告画的工作压力比较大。
|
||||
佩佩: 总之最近产出的图总是有点…问题。
|
||||
我: 画画的过程中哪里感觉不舒服吗?手腕痛,或者头痛?
|
||||
佩佩: 眼睛确实有些不舒服,但是这应该没有什么关联。
|
||||
我: 没有关联?如果看不清线条或者色彩什么的,对于你们美工来说,应该工作会很受影响才是吧。
|
||||
佩佩: 啊…对不起,是我的错,医生。我忘了解释。
|
||||
佩佩: UnstableFusion。就是我左眼的这个模块。我们的图都是由这个模块生成的。我们不用手画画。
|
||||
我: 让我查一查,UnstableFusion……
|
||||
手册: “UnstableFusion,非稳态聚合模块,是幸福罐头公司技术部基于左侧视觉模块研发的图像生成AI。”
|
||||
手册: “它被广泛应用在公司所有美术管线的关键环节,受到美术部的大力欢迎,极大提高了公司的图像产能。”
|
||||
我: 嗯…无论如何它们听起来都在头部。来看一看吧。
|
||||
// 佩佩: ……
|
||||
// 佩佩: 打扰了,医生。能帮我做个检查吗?
|
||||
// 我: 当然没问题。美工组的佩佩,是么?
|
||||
// 佩佩: 是的…你怎么知道的?
|
||||
// 我: 无意偷听,但是你们刚才就站在我的门口。说说吧,你的身体怎么了,感觉哪里不舒服吗?
|
||||
// 佩佩: 倒也没有哪里不舒服……只是最近工作表现很差。
|
||||
// 佩佩: 我也说不出来是最近工作状态更差了,还是因为那个广告画的工作压力比较大。
|
||||
// 佩佩: 总之最近产出的图总是有点…问题。
|
||||
// 我: 画画的过程中哪里感觉不舒服吗?手腕痛,或者头痛?
|
||||
// 佩佩: 眼睛确实有些不舒服,但是这应该没有什么关联。
|
||||
// 我: 没有关联?如果看不清线条或者色彩什么的,对于你们美工来说,应该工作会很受影响才是吧。
|
||||
// 佩佩: 啊…对不起,是我的错,医生。我忘了解释。
|
||||
// 佩佩: UnstableFusion。就是我左眼的这个模块。我们的图都是由这个模块生成的。我们不用手画画。
|
||||
// 我: 让我查一查,UnstableFusion……
|
||||
// 手册: “UnstableFusion,非稳态聚合模块,是幸福罐头公司技术部基于左侧视觉模块研发的图像生成AI。”
|
||||
// 手册: “它被广泛应用在公司所有美术管线的关键环节,受到美术部的大力欢迎,极大提高了公司的图像产能。”
|
||||
// 我: 嗯…无论如何它们听起来都在头部。来看一看吧。
|
||||
///<<任务提示更新:治疗佩佩>>
|
||||
///<<任务提示更新:进行诊断>>
|
||||
///<<任务提示更新:进入患者头部检修面板>>
|
||||
@@ -88,35 +90,90 @@ position: 71,-262
|
||||
///表示记忆模块在当前维修阶段是否已经进入过了
|
||||
<<declare $MemoryVisited = false>>
|
||||
|
||||
<<declare $EyeSocketVisited = false>>
|
||||
///表示UF模块在当前维修阶段是否已经进入过了
|
||||
<<declare $UFSocketVisited = false>>
|
||||
///表示记忆模块在当前维修阶段是否已经进入过了
|
||||
<<declare $MemorySocketVisited = false>>
|
||||
//我: 好的,右边这个黑盒子应该就是UF了,左边这个是她的视觉模块,都检查一下吧。
|
||||
我: 先插线检查下模块吧
|
||||
[command name=activate_socket_choice /]
|
||||
我: 好的,右边这个黑盒子应该就是UF了,左边这个是她的视觉模块,都检查一下吧。
|
||||
<<jump Choice>>
|
||||
===
|
||||
title: Choice
|
||||
position: 74,-5
|
||||
position: 73,4
|
||||
---
|
||||
[options /]
|
||||
-> UFView
|
||||
插入UF模块
|
||||
<<set_view_availability ViewManager "UFView" true>>
|
||||
<<jump Choice>>
|
||||
-> EyeView
|
||||
插入Eye模块
|
||||
<<set_view_availability ViewManager "EyeView" true>>
|
||||
<<jump Choice>>
|
||||
-> MemoryView
|
||||
插入Memory模块
|
||||
<<set_view_availability ViewManager "MemoryView" true>>
|
||||
<<jump Choice>>
|
||||
-> UFViewActivate
|
||||
<<jump MainViewUF>>
|
||||
-> EyeViewActivate
|
||||
<<jump EyeView>>
|
||||
-> MemoryViewActivate
|
||||
<<jump MemoryView>>
|
||||
<<start_transition ViewManager "MainView">>
|
||||
<<if $UFSocketVisited==true&&$EyeVisited==true&&$MemoryVisited==true>>
|
||||
我: 我好像明白了……
|
||||
->结束诊疗
|
||||
<<jump conclusion>>
|
||||
<<else>>
|
||||
<<if $UFSocketVisited==true&&$EyeVisited==true&&$MemoryVisited==false>>
|
||||
我: 看起来需要检查下记忆模块
|
||||
->开启检查权限
|
||||
<<set_view_availability ViewManager "MemoryView" true>>
|
||||
<<endif>>
|
||||
[options /]
|
||||
-> UFView
|
||||
//插入UF模块
|
||||
<<if $UFSocketVisited==false>>
|
||||
<<set $UFSocketVisited= true>>
|
||||
我: uf模块有报错,报错信息是XXXXXX之后看看
|
||||
我: 或许需要深入检查一下
|
||||
->开启检查权限
|
||||
我: 嗯?这个模块的保密属性很高,没有深入的权限......
|
||||
我: 佩佩说过绘图是用这个模块吧
|
||||
我: 或许至少可以让她绘图来看看
|
||||
<<set $UFSocketVisited= true>>
|
||||
<<jump UFtest>>
|
||||
<<else>>
|
||||
我: 这里检查过了
|
||||
<<jump Choice>>
|
||||
<<endif>>
|
||||
-> EyeView
|
||||
//插入Eye模块
|
||||
<<if $EyeSocketVisited==false>>
|
||||
<<set $EyeSocketVisited= true>>
|
||||
我: Eye模块有报错,报错信息是XXXXXX,之后看看
|
||||
我: 或许需要深入检查一下
|
||||
->开启检查权限
|
||||
<<set_view_availability ViewManager "EyeView" true>>
|
||||
我: 好了,现在可以深入视觉模块了
|
||||
<<else>>
|
||||
我: 这里检查过了
|
||||
<<endif>>
|
||||
<<jump Choice>>
|
||||
-> MemoryView
|
||||
//插入Memory模块
|
||||
<<if $MemorySocketVisited==false>>
|
||||
<<set $MemorySocketVisited= true>>
|
||||
我: 嗯,外部检查似乎没什么异常
|
||||
我: 先看看其他需要检查的吧
|
||||
<<else>>
|
||||
我: 这里检查过了
|
||||
<<endif>>
|
||||
<<jump Choice>>
|
||||
-> EyeViewActivate
|
||||
<<if $EyeVisited==false>>
|
||||
<<set $EyeVisited= true>>
|
||||
<<jump EyeView>>
|
||||
<<else>>
|
||||
我: 这里检查过了
|
||||
<<jump Choice>>
|
||||
<<endif>>
|
||||
-> MemoryViewActivate
|
||||
<<if $MemoryVisited==false>>
|
||||
<<set $MemoryVisited= true>>
|
||||
<<jump MemoryView>>
|
||||
<<else>>
|
||||
我: 这里检查过了
|
||||
<<jump Choice>>
|
||||
<<endif>>
|
||||
<<endif>>
|
||||
===
|
||||
title: EyeView
|
||||
position: 440,16
|
||||
position: 554,14
|
||||
---
|
||||
///进入视觉模块
|
||||
<<start_transition ViewManager "EyeView">>
|
||||
@@ -151,19 +208,22 @@ WARNING: 无法读取色觉模组。(病症介绍,可能是普遍现象)
|
||||
///<<任务提示更新:检查视觉模块已完成>>
|
||||
<<set $EyeVisited to true>>
|
||||
|
||||
<<if $EyeVisited && $UFVisited && $MemoryVisited>>
|
||||
<<jump Treatment>>
|
||||
<<else>>
|
||||
//<<if $EyeVisited && $UFVisited && $MemoryVisited>>
|
||||
//<<jump Treatment>>
|
||||
//<<else>>
|
||||
<<jump Choice>>
|
||||
<<endif>>
|
||||
//<<endif>>
|
||||
|
||||
===
|
||||
title: MainViewUF
|
||||
title: UFtest
|
||||
position: -324,10
|
||||
---
|
||||
///确保是在主视角下进行UF模块的操作
|
||||
<<start_transition ViewManager "MainView">>
|
||||
我: 我们用UF画一张图吧
|
||||
我: 佩佩,我需要检查下你的UF模块,你是用它来绘图对吧
|
||||
佩佩: 啊是的!
|
||||
我: 那可以画一张图么,就最近工作里的内容就好
|
||||
佩佩: 好的,我试试...
|
||||
<<show_photo UFManager "colorError">>
|
||||
//【图片颜色错误】
|
||||
///<<任务提示更新:进行UF绘图测试已完成>>
|
||||
@@ -171,7 +231,7 @@ position: -324,10
|
||||
我: 图片看起来…有点诡异。
|
||||
我: 让我看看手册。(各种情况对应不同的病因)
|
||||
///这里等会儿改成手册操作
|
||||
手册: ERROR#9964:不兼容型排异反应。由于受到一些记忆的排异,UF无法正常读取素材。请在记忆模块定位排异源。
|
||||
手册: ERROR9964:不兼容型排异反应。由于受到一些记忆的排异,UF无法正常读取素材。请在记忆模块定位排异源。
|
||||
///<<任务提示更新:定位绘图错误的原因已完成>>
|
||||
///<<任务提示更新:检查UF模块已完成>>
|
||||
///<<任务提示更新:检查记忆模块,定位排异源>>
|
||||
@@ -184,17 +244,17 @@ position: -324,10
|
||||
我: 不好说,需要先检查下。
|
||||
佩佩: 好的,麻烦医生了。
|
||||
///标记现在已经访问主视角下的UF模块了
|
||||
<<set $UFVisited to true>>
|
||||
//<<set $UFVisited to true>>
|
||||
|
||||
<<if $EyeVisited && $UFVisited && $MemoryVisited>>
|
||||
<<jump Treatment>>
|
||||
<<else>>
|
||||
// <<if $EyeVisited && $UFVisited && $MemoryVisited>>
|
||||
// <<jump Treatment>>
|
||||
// <<else>>
|
||||
<<jump Choice>>
|
||||
<<endif>>
|
||||
//<<endif>>
|
||||
|
||||
===
|
||||
title: MemoryView
|
||||
position: 75,242
|
||||
position: 397,211
|
||||
---
|
||||
<<start_transition ViewManager "MemoryView">>
|
||||
我: 定位一下排异的记忆…
|
||||
@@ -244,15 +304,13 @@ position: 75,242
|
||||
///<<任务提示更新:检查记忆模块,定位排异源完成>>
|
||||
手册: 记忆被异常占用
|
||||
<<set $MemoryVisited to true>>
|
||||
<<jump conclusion>>
|
||||
|
||||
<<jump Choice>>
|
||||
===
|
||||
title: conclusion
|
||||
position: 72,462
|
||||
position: 75,366
|
||||
|
||||
---
|
||||
<<load_scene ClinicScene>>
|
||||
我: 我好像明白了……
|
||||
///<<load_scene 主房间>>
|
||||
///<<任务提示更新:进行诊断已完成>>
|
||||
我: 你的视觉在调用记忆里的素材,为看到的图像填补颜色。
|
||||
|
||||
Reference in New Issue
Block a user