From fb1a08db2b5133d8ab5fcfa349b379935ba6e46e Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Fri, 23 Aug 2024 15:51:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=B4=E4=BF=AE=E5=9C=BA?= =?UTF-8?q?=E6=99=AF=E5=AF=B9view=E7=8A=B6=E6=80=81=E7=9A=84=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=EF=BC=8C=E4=BF=AE=E6=94=B9yarn=E6=9D=A5=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E4=BA=A4=E4=BA=92=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../佩佩/Scripts/EyeTransitionManager.cs | 81 ++++++- Assets/Prototype/佩佩/佩佩视觉模块.unity | 12 +- .../Yarn/PeipeiTalk/PeipeiTalk1.yarn | 206 +++++++++++------- 3 files changed, 214 insertions(+), 85 deletions(-) diff --git a/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs b/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs index 83dd66e29..3f6f3e375 100644 --- a/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs +++ b/Assets/Prototype/佩佩/Scripts/EyeTransitionManager.cs @@ -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); } // 开始视图过渡 diff --git a/Assets/Prototype/佩佩/佩佩视觉模块.unity b/Assets/Prototype/佩佩/佩佩视觉模块.unity index 271cb9e63..739c75518 100644 --- a/Assets/Prototype/佩佩/佩佩视觉模块.unity +++ b/Assets/Prototype/佩佩/佩佩视觉模块.unity @@ -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 diff --git a/Assets/Resources/Yarn/PeipeiTalk/PeipeiTalk1.yarn b/Assets/Resources/Yarn/PeipeiTalk/PeipeiTalk1.yarn index cef100a27..7e8cf7d08 100644 --- a/Assets/Resources/Yarn/PeipeiTalk/PeipeiTalk1.yarn +++ b/Assets/Resources/Yarn/PeipeiTalk/PeipeiTalk1.yarn @@ -6,19 +6,21 @@ title: Start tags: position: 58,-1202 --- +//<> +//<> <> === title: TV position: 63,-958 --- -<> -电视: 新闻1内容 -<> -电视: 新闻2内容 -<> -电视: 新闻3内容 -我: 销售大赛…给机器人销售罐头?为什么呢…… +// <> +// 电视: 新闻1内容 +// <> +// 电视: 新闻2内容 +// <> +// 电视: 新闻3内容 +// 我: 销售大赛…给机器人销售罐头?为什么呢…… <> === @@ -26,18 +28,18 @@ position: 63,-958 title: OutDoorTalk position: 72,-688 --- -英理: 就是这里了,员工诊所。身体检查一定会对你的生产效率有帮助的。 <> -英理: 我不希望就因为你生病,而让我们部门的评价受到影响。 -佩佩: 我没病,组长……我会完成得很好的。相信我。我以前…… -英理: 我不在乎你之前做得有多好——我现在不想和你讨论你所说的“好的标准是什么”,那对我来说没有任何意义。 -英理: 我不知道为什么你不能理解:如果不能按公司的要求完成,你就会被回收。这是唯一的标准。 -英理: 公司花了很多资源培养你。就算你不在乎你自己,也不要让公司失望。 -佩佩: 我…… -英理: 听着,佩佩。我是在帮你。 -英理: 你的效率是整个美工组最低的,只要我想,我可以直接把你送回收。为了保住你,我承担了你难以想象的压力。 -英理: (叹气) -英理: 做个身体检查,恢复你的效率。今晚好好休息。 +// 英理: 就是这里了,员工诊所。身体检查一定会对你的生产效率有帮助的。 +// 英理: 我不希望就因为你生病,而让我们部门的评价受到影响。 +// 佩佩: 我没病,组长……我会完成得很好的。相信我。我以前…… +// 英理: 我不在乎你之前做得有多好——我现在不想和你讨论你所说的“好的标准是什么”,那对我来说没有任何意义。 +// 英理: 我不知道为什么你不能理解:如果不能按公司的要求完成,你就会被回收。这是唯一的标准。 +// 英理: 公司花了很多资源培养你。就算你不在乎你自己,也不要让公司失望。 +// 佩佩: 我…… +// 英理: 听着,佩佩。我是在帮你。 +// 英理: 你的效率是整个美工组最低的,只要我想,我可以直接把你送回收。为了保住你,我承担了你难以想象的压力。 +// 英理: (叹气) +// 英理: 做个身体检查,恢复你的效率。今晚好好休息。 佩佩: 是的,组长。 佩佩: …… <> @@ -49,23 +51,23 @@ position: 74,-513 ///<<播放轻轻的敲门声>> 我: 当然,请进吧。 //<> -佩佩: …… -佩佩: 打扰了,医生。能帮我做个检查吗? -我: 当然没问题。美工组的佩佩,是么? -佩佩: 是的…你怎么知道的? -我: 无意偷听,但是你们刚才就站在我的门口。说说吧,你的身体怎么了,感觉哪里不舒服吗? -佩佩: 倒也没有哪里不舒服……只是最近工作表现很差。 -佩佩: 我也说不出来是最近工作状态更差了,还是因为那个广告画的工作压力比较大。 -佩佩: 总之最近产出的图总是有点…问题。 -我: 画画的过程中哪里感觉不舒服吗?手腕痛,或者头痛? -佩佩: 眼睛确实有些不舒服,但是这应该没有什么关联。 -我: 没有关联?如果看不清线条或者色彩什么的,对于你们美工来说,应该工作会很受影响才是吧。 -佩佩: 啊…对不起,是我的错,医生。我忘了解释。 -佩佩: UnstableFusion。就是我左眼的这个模块。我们的图都是由这个模块生成的。我们不用手画画。 -我: 让我查一查,UnstableFusion…… -手册: “UnstableFusion,非稳态聚合模块,是幸福罐头公司技术部基于左侧视觉模块研发的图像生成AI。” -手册: “它被广泛应用在公司所有美术管线的关键环节,受到美术部的大力欢迎,极大提高了公司的图像产能。” -我: 嗯…无论如何它们听起来都在头部。来看一看吧。 +// 佩佩: …… +// 佩佩: 打扰了,医生。能帮我做个检查吗? +// 我: 当然没问题。美工组的佩佩,是么? +// 佩佩: 是的…你怎么知道的? +// 我: 无意偷听,但是你们刚才就站在我的门口。说说吧,你的身体怎么了,感觉哪里不舒服吗? +// 佩佩: 倒也没有哪里不舒服……只是最近工作表现很差。 +// 佩佩: 我也说不出来是最近工作状态更差了,还是因为那个广告画的工作压力比较大。 +// 佩佩: 总之最近产出的图总是有点…问题。 +// 我: 画画的过程中哪里感觉不舒服吗?手腕痛,或者头痛? +// 佩佩: 眼睛确实有些不舒服,但是这应该没有什么关联。 +// 我: 没有关联?如果看不清线条或者色彩什么的,对于你们美工来说,应该工作会很受影响才是吧。 +// 佩佩: 啊…对不起,是我的错,医生。我忘了解释。 +// 佩佩: UnstableFusion。就是我左眼的这个模块。我们的图都是由这个模块生成的。我们不用手画画。 +// 我: 让我查一查,UnstableFusion…… +// 手册: “UnstableFusion,非稳态聚合模块,是幸福罐头公司技术部基于左侧视觉模块研发的图像生成AI。” +// 手册: “它被广泛应用在公司所有美术管线的关键环节,受到美术部的大力欢迎,极大提高了公司的图像产能。” +// 我: 嗯…无论如何它们听起来都在头部。来看一看吧。 ///<<任务提示更新:治疗佩佩>> ///<<任务提示更新:进行诊断>> ///<<任务提示更新:进入患者头部检修面板>> @@ -88,35 +90,90 @@ position: 71,-262 ///表示记忆模块在当前维修阶段是否已经进入过了 <> +<> +///表示UF模块在当前维修阶段是否已经进入过了 +<> +///表示记忆模块在当前维修阶段是否已经进入过了 +<> +//我: 好的,右边这个黑盒子应该就是UF了,左边这个是她的视觉模块,都检查一下吧。 +我: 先插线检查下模块吧 [command name=activate_socket_choice /] -我: 好的,右边这个黑盒子应该就是UF了,左边这个是她的视觉模块,都检查一下吧。 <> === title: Choice -position: 74,-5 +position: 73,4 --- -[options /] - -> UFView - 插入UF模块 - <> - <> - -> EyeView - 插入Eye模块 - <> - <> - -> MemoryView - 插入Memory模块 - <> - <> - -> UFViewActivate - <> - -> EyeViewActivate - <> - -> MemoryViewActivate - <> + <> +<> +我: 我好像明白了…… +->结束诊疗 + <> +<> +<> +我: 看起来需要检查下记忆模块 + ->开启检查权限 + <> +<> + [options /] + -> UFView + //插入UF模块 + <> + <> + 我: uf模块有报错,报错信息是XXXXXX之后看看 + 我: 或许需要深入检查一下 + ->开启检查权限 + 我: 嗯?这个模块的保密属性很高,没有深入的权限...... + 我: 佩佩说过绘图是用这个模块吧 + 我: 或许至少可以让她绘图来看看 + <> + <> + <> + 我: 这里检查过了 + <> + <> + -> EyeView + //插入Eye模块 + <> + <> + 我: Eye模块有报错,报错信息是XXXXXX,之后看看 + 我: 或许需要深入检查一下 + ->开启检查权限 + <> + 我: 好了,现在可以深入视觉模块了 + <> + 我: 这里检查过了 + <> + <> + -> MemoryView + //插入Memory模块 + <> + <> + 我: 嗯,外部检查似乎没什么异常 + 我: 先看看其他需要检查的吧 + <> + 我: 这里检查过了 + <> + <> + -> EyeViewActivate + <> + <> + <> + <> + 我: 这里检查过了 + <> + <> + -> MemoryViewActivate + <> + <> + <> + <> + 我: 这里检查过了 + <> + <> +<> === title: EyeView -position: 440,16 +position: 554,14 --- ///进入视觉模块 <> @@ -151,19 +208,22 @@ WARNING: 无法读取色觉模组。(病症介绍,可能是普遍现象) ///<<任务提示更新:检查视觉模块已完成>> <> - <> - <> - <> + //<> + //<> + //<> <> - <> + //<> === -title: MainViewUF +title: UFtest position: -324,10 --- ///确保是在主视角下进行UF模块的操作 <> -我: 我们用UF画一张图吧 +我: 佩佩,我需要检查下你的UF模块,你是用它来绘图对吧 +佩佩: 啊是的! +我: 那可以画一张图么,就最近工作里的内容就好 +佩佩: 好的,我试试... <> //【图片颜色错误】 ///<<任务提示更新:进行UF绘图测试已完成>> @@ -171,7 +231,7 @@ position: -324,10 我: 图片看起来…有点诡异。 我: 让我看看手册。(各种情况对应不同的病因) ///这里等会儿改成手册操作 -手册: ERROR#9964:不兼容型排异反应。由于受到一些记忆的排异,UF无法正常读取素材。请在记忆模块定位排异源。 +手册: ERROR9964:不兼容型排异反应。由于受到一些记忆的排异,UF无法正常读取素材。请在记忆模块定位排异源。 ///<<任务提示更新:定位绘图错误的原因已完成>> ///<<任务提示更新:检查UF模块已完成>> ///<<任务提示更新:检查记忆模块,定位排异源>> @@ -184,17 +244,17 @@ position: -324,10 我: 不好说,需要先检查下。 佩佩: 好的,麻烦医生了。 ///标记现在已经访问主视角下的UF模块了 -<> +//<> -<> -<> -<> +// <> +// <> +// <> <> -<> +//<> === title: MemoryView -position: 75,242 +position: 397,211 --- <> 我: 定位一下排异的记忆… @@ -244,15 +304,13 @@ position: 75,242 ///<<任务提示更新:检查记忆模块,定位排异源完成>> 手册: 记忆被异常占用 <> -<> - +<> === title: conclusion -position: 72,462 +position: 75,366 --- <> -我: 我好像明白了…… ///<> ///<<任务提示更新:进行诊断已完成>> 我: 你的视觉在调用记忆里的素材,为看到的图像填补颜色。