From 2f6177cd33cf53507b89941dd4120f4692de74d0 Mon Sep 17 00:00:00 2001 From: Ding Yuntian <1491671119@qq.com> Date: Wed, 8 Apr 2026 13:57:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8D=95=E7=8B=AC=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E4=B8=AD=E7=9A=84=E7=89=A9=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../诊所外/{WIND LOOP.anim => 树叶刮风.anim} | 2 +- ...WIND LOOP.anim.meta => 树叶刮风.anim.meta} | 0 .../诊所外/{BIG WIND.anim => 树叶大风.anim} | 2 +- ...{BIG WIND.anim.meta => 树叶大风.anim.meta} | 0 .../Art/诊所外/{树三帧.anim => 树叶安静.anim} | 2 +- .../{树三帧.anim.meta => 树叶安静.anim.meta} | 0 .../Art/诊所外/诊所外树叶动画.controller | 10 +++--- Assets/Scenes/ClinicOut.unity | 2 ++ .../EnvironmentKit/EnvironmentManager.cs | 35 ++++++++++++++++--- 9 files changed, 41 insertions(+), 12 deletions(-) rename Assets/RawResources/Art/诊所外/{WIND LOOP.anim => 树叶刮风.anim} (99%) rename Assets/RawResources/Art/诊所外/{WIND LOOP.anim.meta => 树叶刮风.anim.meta} (100%) rename Assets/RawResources/Art/诊所外/{BIG WIND.anim => 树叶大风.anim} (99%) rename Assets/RawResources/Art/诊所外/{BIG WIND.anim.meta => 树叶大风.anim.meta} (100%) rename Assets/RawResources/Art/诊所外/{树三帧.anim => 树叶安静.anim} (98%) rename Assets/RawResources/Art/诊所外/{树三帧.anim.meta => 树叶安静.anim.meta} (100%) diff --git a/Assets/RawResources/Art/诊所外/WIND LOOP.anim b/Assets/RawResources/Art/诊所外/树叶刮风.anim similarity index 99% rename from Assets/RawResources/Art/诊所外/WIND LOOP.anim rename to Assets/RawResources/Art/诊所外/树叶刮风.anim index 84ea11ab6..e77fa27e6 100644 --- a/Assets/RawResources/Art/诊所外/WIND LOOP.anim +++ b/Assets/RawResources/Art/诊所外/树叶刮风.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: WIND LOOP + m_Name: "\u6811\u53F6\u522E\u98CE" serializedVersion: 7 m_Legacy: 0 m_Compressed: 0 diff --git a/Assets/RawResources/Art/诊所外/WIND LOOP.anim.meta b/Assets/RawResources/Art/诊所外/树叶刮风.anim.meta similarity index 100% rename from Assets/RawResources/Art/诊所外/WIND LOOP.anim.meta rename to Assets/RawResources/Art/诊所外/树叶刮风.anim.meta diff --git a/Assets/RawResources/Art/诊所外/BIG WIND.anim b/Assets/RawResources/Art/诊所外/树叶大风.anim similarity index 99% rename from Assets/RawResources/Art/诊所外/BIG WIND.anim rename to Assets/RawResources/Art/诊所外/树叶大风.anim index 507b9d883..03f880dd4 100644 --- a/Assets/RawResources/Art/诊所外/BIG WIND.anim +++ b/Assets/RawResources/Art/诊所外/树叶大风.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: BIG WIND + m_Name: "\u6811\u53F6\u5927\u98CE" serializedVersion: 7 m_Legacy: 0 m_Compressed: 0 diff --git a/Assets/RawResources/Art/诊所外/BIG WIND.anim.meta b/Assets/RawResources/Art/诊所外/树叶大风.anim.meta similarity index 100% rename from Assets/RawResources/Art/诊所外/BIG WIND.anim.meta rename to Assets/RawResources/Art/诊所外/树叶大风.anim.meta diff --git a/Assets/RawResources/Art/诊所外/树三帧.anim b/Assets/RawResources/Art/诊所外/树叶安静.anim similarity index 98% rename from Assets/RawResources/Art/诊所外/树三帧.anim rename to Assets/RawResources/Art/诊所外/树叶安静.anim index e5fde3d01..b77ad86a8 100644 --- a/Assets/RawResources/Art/诊所外/树三帧.anim +++ b/Assets/RawResources/Art/诊所外/树叶安静.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: "\u6811\u4E09\u5E27" + m_Name: "\u6811\u53F6\u5B89\u9759" serializedVersion: 7 m_Legacy: 0 m_Compressed: 0 diff --git a/Assets/RawResources/Art/诊所外/树三帧.anim.meta b/Assets/RawResources/Art/诊所外/树叶安静.anim.meta similarity index 100% rename from Assets/RawResources/Art/诊所外/树三帧.anim.meta rename to Assets/RawResources/Art/诊所外/树叶安静.anim.meta diff --git a/Assets/RawResources/Art/诊所外/诊所外树叶动画.controller b/Assets/RawResources/Art/诊所外/诊所外树叶动画.controller index 5c28ca545..8004b8c78 100644 --- a/Assets/RawResources/Art/诊所外/诊所外树叶动画.controller +++ b/Assets/RawResources/Art/诊所外/诊所外树叶动画.controller @@ -7,7 +7,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: WIND LOOP + m_Name: "\u6811\u53F6\u522E\u98CE" m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] @@ -33,7 +33,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: BIG WIND + m_Name: "\u6811\u53F6\u5927\u98CE" m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] @@ -88,7 +88,7 @@ AnimatorStateMachine: m_Position: {x: 350, y: 300, z: 0} - serializedVersion: 1 m_State: {fileID: -5182194875410447805} - m_Position: {x: 350, y: 210, z: 0} + m_Position: {x: 680, y: 300, z: 0} - serializedVersion: 1 m_State: {fileID: 8810316756321988090} m_Position: {x: 350, y: 120, z: 0} @@ -99,7 +99,7 @@ AnimatorStateMachine: m_StateMachineBehaviours: [] m_AnyStatePosition: {x: 50, y: 20, z: 0} m_EntryPosition: {x: 50, y: 120, z: 0} - m_ExitPosition: {x: 800, y: 120, z: 0} + m_ExitPosition: {x: 950, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: 8810316756321988090} --- !u!1102 &8810316756321988090 @@ -109,7 +109,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: "\u6811\u4E09\u5E27" + m_Name: "\u6811\u53F6\u5B89\u9759" m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] diff --git a/Assets/Scenes/ClinicOut.unity b/Assets/Scenes/ClinicOut.unity index 03862d780..b7579d5c9 100644 --- a/Assets/Scenes/ClinicOut.unity +++ b/Assets/Scenes/ClinicOut.unity @@ -8126,6 +8126,8 @@ MonoBehaviour: timelineName: "\u533B\u751F\u51FA\u5730\u94C1" director: {fileID: 1854508164} autoBindCinemachineBrain: 0 + resetToStartWhenFinished: 0 + resetToStartDelay: 0 --- !u!1 &1882541513 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/SceneManagement/EnvironmentKit/EnvironmentManager.cs b/Assets/Scripts/SceneManagement/EnvironmentKit/EnvironmentManager.cs index dabf21475..efd5e8d97 100644 --- a/Assets/Scripts/SceneManagement/EnvironmentKit/EnvironmentManager.cs +++ b/Assets/Scripts/SceneManagement/EnvironmentKit/EnvironmentManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections; +using System.Collections.Generic; using AibisDream.Framework; using AibisDream.Kit; using Newtonsoft.Json; @@ -13,8 +14,9 @@ namespace AibisDream public bool initOnAwake = true; public TimesOfDay defaultTime; public Weather defaultWeather; - + private AbsScenePart[] _absSceneParts; + private Dictionary _animatorDict; private readonly EnvironmentData _environmentData = new(); @@ -46,6 +48,13 @@ namespace AibisDream Debug.Log("已经初始化过了"); return; } + + // 初始化Animator索引 + _animatorDict = new Dictionary(); + foreach (var animator in GetComponentsInChildren(true)) + { + _animatorDict[animator.gameObject.name] = animator; + } _absSceneParts = GetComponentsInChildren(true); foreach (var part in _absSceneParts) @@ -74,9 +83,21 @@ namespace AibisDream { part.OnWeatherChange(weather); } - + _environmentData.curWeather = weather; } + + public void ControlSinglePart(string partName, string action) + { + if (_animatorDict.TryGetValue(partName, out var animator)) + { + animator.Play(action); + } + else + { + Debug.Log($"{partName}不存在"); + } + } } public static class EnvironmentYarnCommand @@ -110,7 +131,7 @@ namespace AibisDream EnvironmentManager.Instance.SetTimeOfDay(time); } - + [YarnCommand("set_weather")] public static void SetWeather(string weatherType) { @@ -119,9 +140,15 @@ namespace AibisDream Debug.Log($"{weatherType}是不存在的天气"); return; } - + EnvironmentManager.Instance.SetWeather(weather); } + + [YarnCommand("control_single_part")] + public static void ControlSinglePart(string partName, string action) + { + EnvironmentManager.Instance.ControlSinglePart(partName, action); + } } [Serializable]