diff --git a/Assets/Scripts/FixSystemNew/BodyModule/BodyModuleSystem.cs b/Assets/Scripts/FixSystemNew/BodyModule/BodyModuleSystem.cs
index 26868bb35..8913cb6aa 100644
--- a/Assets/Scripts/FixSystemNew/BodyModule/BodyModuleSystem.cs
+++ b/Assets/Scripts/FixSystemNew/BodyModule/BodyModuleSystem.cs
@@ -152,7 +152,7 @@ namespace AibisDream.FixSystem
}
}
}
-
+
///
/// 寻找指定名称的BodyModule
///
@@ -163,6 +163,16 @@ namespace AibisDream.FixSystem
return BodyModules?.FirstOrDefault(module => module.data.moduleName == modulename);
}
+ ///
+ /// 寻找指定类型的BodyModule
+ ///
+ /// 模块类型
+ /// 对应类型的BodyModule
+ public T FindBodyModuleByType() where T : BodyModule
+ {
+ return BodyModules?.FirstOrDefault(module => module is T) as T;
+ }
+
///
/// 设置发热
///
diff --git a/Assets/Scripts/FixSystemNew/BodyModule/Modules/BodyModule.cs b/Assets/Scripts/FixSystemNew/BodyModule/Modules/BodyModule.cs
index c9ca8a27e..2dc51c63a 100644
--- a/Assets/Scripts/FixSystemNew/BodyModule/Modules/BodyModule.cs
+++ b/Assets/Scripts/FixSystemNew/BodyModule/Modules/BodyModule.cs
@@ -5,7 +5,6 @@ using UnityEngine;
using System.Collections;
using DG.Tweening;
using AibisDream.Kit;
-using UnityEngine.Serialization;
namespace AibisDream.FixSystem
{
diff --git a/Assets/Scripts/FixSystemNew/BodyModule/Modules/EyeModule.cs b/Assets/Scripts/FixSystemNew/BodyModule/Modules/EyeModule.cs
new file mode 100644
index 000000000..466c2d199
--- /dev/null
+++ b/Assets/Scripts/FixSystemNew/BodyModule/Modules/EyeModule.cs
@@ -0,0 +1,37 @@
+using System.Collections;
+using UnityEngine;
+using AibisDream.Kit;
+using AibisDream.Framework;
+using UnityEngine.ResourceManagement.AsyncOperations;
+
+namespace AibisDream.FixSystem
+{
+ public class EyeModule : BodyModule
+ {
+ private static IEnumerator ApplyCoverSprite(SpriteRenderer sp, string address)
+ {
+ var handle = ResourceSystem.LoadAsync(address);
+ yield return handle;
+ if (handle.Status == AsyncOperationStatus.Succeeded)
+ sp.sprite = handle.Result;
+ }
+
+ public IEnumerator OpenEye()
+ {
+ var sp = transform.Find("Cover").GetComponent();
+ AudioManager.Instance.PlaySfx("event:/ActionFB/eye_open");
+ yield return ApplyCoverSprite(sp, FixAssetRef.EyeCoverOpenA);
+ yield return new WaitForSeconds(0.1f);
+ yield return ApplyCoverSprite(sp, FixAssetRef.EyeCoverOpenB);
+ }
+
+ public IEnumerator CloseEye()
+ {
+ var sp = transform.Find("Cover").GetComponent();
+ yield return ApplyCoverSprite(sp, FixAssetRef.EyeCoverOpenA);
+ AudioManager.Instance.PlaySfx("event:/ActionFB/eye_close");
+ yield return new WaitForSeconds(0.1f);
+ yield return ApplyCoverSprite(sp, FixAssetRef.EyeCoverClose);
+ }
+ }
+}
diff --git a/Assets/Scripts/FixSystemNew/BodyModule/Modules/EyeModule.cs.meta b/Assets/Scripts/FixSystemNew/BodyModule/Modules/EyeModule.cs.meta
new file mode 100644
index 000000000..e68696b52
--- /dev/null
+++ b/Assets/Scripts/FixSystemNew/BodyModule/Modules/EyeModule.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ef3089c3a47fcd84689e9cf23e93ce75
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/FixSystemNew/FixStateMachine.cs b/Assets/Scripts/FixSystemNew/FixStateMachine.cs
index e64c890d3..3311f7779 100644
--- a/Assets/Scripts/FixSystemNew/FixStateMachine.cs
+++ b/Assets/Scripts/FixSystemNew/FixStateMachine.cs
@@ -254,12 +254,9 @@ namespace AibisDream.FixSystem
}
//打开盖子
- SpriteRenderer sp = bodyModuleSystem.FindBodyModuleByName("Eye").transform.Find("Cover")
- .GetComponent();
- sp.sprite = Resources.Load("Art/Fix/Peipei/Eye/视觉模块盖子打开A");
- AudioManager.Instance.PlaySfx("event:/ActionFB/eye_open");
- yield return new WaitForSeconds(0.1f);
- sp.sprite = Resources.Load("Art/Fix/Peipei/Eye/视觉模块盖子打开B");
+ var eyeModule = bodyModuleSystem.FindBodyModuleByType();
+ yield return eyeModule.OpenEye();
+
// 插头回到初始插孔
FixPanelSystem.GetRepairPanel().ResetPlug();
// 切换相机
@@ -284,12 +281,8 @@ namespace AibisDream.FixSystem
yield return new WaitForSeconds(0.1f);
yield return UIManager.Instance.GetPanel().FadeOutAsync(duration);
//关上
- SpriteRenderer sp = bodyModuleSystem.FindBodyModuleByName("Eye").transform.Find("Cover")
- .GetComponent();
- sp.sprite = Resources.Load("Art/Fix/Peipei/Eye/视觉模块盖子打开A");
- AudioManager.Instance.PlaySfx("event:/ActionFB/eye_close");
- yield return new WaitForSeconds(0.1f);
- sp.sprite = Resources.Load("Art/Fix/Peipei/Eye/视觉模块盖子关闭");
+ var eyeModule = bodyModuleSystem.FindBodyModuleByType();
+ yield return eyeModule.CloseEye();
yield return new WaitForSeconds(0.5f);
}
}