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); } }