فهرست منبع

添加人物说话时背景音乐降低

leiyasi 1 سال پیش
والد
کامیت
38dfde2f05

+ 29 - 23
GameClient/Assets/Game/HotUpdate/Sound/MusicManager.cs

@@ -11,9 +11,9 @@ namespace GFGGame
         private string currentName;
         private AssetOperationHandle handle;
         private Coroutine coroutine;
-        private float storyDialogVolumn = 0.6f;
-        private float storyDialogVolumnWhenVoice = 0.17f;
-        private float storyDialogChangeValue = 0.3f;
+        private float normalVolumn = 1f;
+        private float curVolume = 1f;
+        private float changeValue = 0.01f;
 
         private bool _isOn = true;
         public bool isOn
@@ -24,12 +24,12 @@ namespace GFGGame
             }
             set
             {
-                if(_isOn != value)
+                if (_isOn != value)
                 {
                     _isOn = value;
-                    if(_isOn)
+                    if (_isOn)
                     {
-                        if(currentName != null)
+                        if (currentName != null)
                         {
                             PlayCroutine(currentName, true);
                         }
@@ -50,42 +50,43 @@ namespace GFGGame
             isOn = LocalCache.GetBool(LauncherConfig.MUSIC_KEY, true);
         }
 
-        private void Start() 
+        private void Start()
         {
-            
+
         }
 
-        private void Update() 
+        private void Update()
         {
-            if (player.clip == null)
+            if (player.clip == null || !isOn)
             {
                 return;
             }
 
             if (VoiceManager.Instance.IsPlaying())
             {
-                if (player.volume > storyDialogVolumnWhenVoice)
-                {
-                    player.volume -= storyDialogChangeValue * Time.deltaTime;
-                    player.volume = Mathf.Max(player.volume, storyDialogVolumnWhenVoice);
-                }
+                curVolume = 0.17f;
             }
             else
             {
-                if (player.volume < storyDialogVolumn)
+                curVolume = normalVolumn;
+            }
+
+            if (player.volume != curVolume)
+            {
+                player.volume = Mathf.Lerp(player.volume, curVolume, changeValue);
+                if (Mathf.Abs(player.volume - curVolume) <= 0.05)
                 {
-                    player.volume += storyDialogChangeValue * Time.deltaTime;
-                    player.volume = Mathf.Min(player.volume, storyDialogVolumn);
+                    player.volume = curVolume;
                 }
             }
         }
 
         public void PlayCroutine(string path, bool must = false, float volume = 1.0f)
         {
-            if(currentName != path || must)
+            if (currentName != path || must)
             {
                 currentName = path;
-                if(coroutine != null)
+                if (coroutine != null)
                 {
                     StopCoroutine(coroutine);
                 }
@@ -118,7 +119,7 @@ namespace GFGGame
         public void Pause()
         {
             player.Pause();
-        } 
+        }
         public void UnPause()
         {
             player.UnPause();
@@ -129,9 +130,14 @@ namespace GFGGame
             player?.Stop();
         }
 
-        public void SetDefaultStoryDialogVolume()
+        public void SetVolume(float volume)
+        {
+            player.volume = volume;
+        }
+
+        public void SetNormalVolumn(float volume)
         {
-            player.volume = storyDialogVolumn;
+            normalVolumn = volume;
         }
     }
 }

+ 4 - 1
GameClient/Assets/Game/HotUpdate/Views/MainStory/StoryDialogView.cs

@@ -106,7 +106,8 @@ namespace GFGGame
         {
             base.OnShown();
             MusicManager.Instance.Stop();
-            MusicManager.Instance.SetDefaultStoryDialogVolume();
+            MusicManager.Instance.SetNormalVolumn(0.6f);
+            MusicManager.Instance.SetVolume(0);
 
             if (_sceneObject == null)
             {
@@ -197,6 +198,8 @@ namespace GFGGame
             StoryDialogDataManager.Instance.Clear();
 
             GuideController.TryCompleteGuide(ConstGuideId.ENTER_CHAPTER_5, 3);
+            MusicManager.Instance.SetNormalVolumn(1);
+
         }
 
         protected override void TryCompleteGuide()