From 49b0499a43f40919fb4facc1b12ac05e20cc79bb Mon Sep 17 00:00:00 2001 From: chenxi Date: Tue, 18 Apr 2023 16:04:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E9=94=AE=E4=BC=A4=E5=AE=B3=E5=B8=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CharacterHelperInspector.cs | 12 ++++++- .../Component/Helper/CharacterSpineHelper.cs | 15 ++++++++ .../XLua/Gen/BF_CharacterSpineHelperWrap.cs | 32 +++++++++++++++++- .../spines/characters/p0002/p0002.skel.bytes | Bin 75219 -> 68362 bytes .../prefabs/spine/ui/characters/p0002.prefab | 2 +- 5 files changed, 58 insertions(+), 3 deletions(-) diff --git a/Assets/Editor/InspectorTools/CharacterHelperInspector.cs b/Assets/Editor/InspectorTools/CharacterHelperInspector.cs index 80e40de45..45e8f4cc5 100644 --- a/Assets/Editor/InspectorTools/CharacterHelperInspector.cs +++ b/Assets/Editor/InspectorTools/CharacterHelperInspector.cs @@ -265,7 +265,17 @@ namespace BFEditor { bool isPlay = list.Items[i].Name == m_CurAnimationName; GUILayout.BeginHorizontal(); - if (GUILayout.Button(string.Format("动作:{0}==============时长:{1}s", list.Items[i].Name, list.Items[i].Duration), isPlay ? highlightStyle : normalStyle)) + float keyFrame = 0.0f; + foreach(var t in list.Items[i].Timelines) { + var et = t as Spine.EventTimeline; + if(et != null) { + foreach (var spineEvent in et.Events) { + keyFrame = spineEvent.Time; + break; + } + } + } + if (GUILayout.Button(string.Format("动作:{0}============时长:{1}s============关键帧:{2}s", list.Items[i].Name, list.Items[i].Duration, keyFrame), isPlay ? highlightStyle : normalStyle)) { } GUILayout.EndHorizontal(); diff --git a/Assets/Scripts/Component/Helper/CharacterSpineHelper.cs b/Assets/Scripts/Component/Helper/CharacterSpineHelper.cs index 8d34c0da2..bfd8111cb 100644 --- a/Assets/Scripts/Component/Helper/CharacterSpineHelper.cs +++ b/Assets/Scripts/Component/Helper/CharacterSpineHelper.cs @@ -235,6 +235,21 @@ namespace BF return skeletonGraphic.skeletonDataAsset.GetAnimationStateData().SkeletonData.FindAnimation(name).Duration; } + public float GetAnimationKeyFrameTime(string name) + { + float time = 0.0f; + var animation = skeletonGraphic.skeletonDataAsset.GetAnimationStateData().SkeletonData.FindAnimation(name); + foreach (var timeline in animation.Timelines) + { + var eventTimeline = timeline as Spine.EventTimeline; + if (eventTimeline != null && eventTimeline.Events.Length > 0) + { + time = eventTimeline.Events[0].Time; + } + } + return time; + } + public void SetDefaultMix(float mixDuration) { skeletonGraphic.skeletonDataAsset.GetAnimationStateData().DefaultMix = mixDuration; diff --git a/Assets/XLua/Gen/BF_CharacterSpineHelperWrap.cs b/Assets/XLua/Gen/BF_CharacterSpineHelperWrap.cs index 8bea1774b..e939181dd 100644 --- a/Assets/XLua/Gen/BF_CharacterSpineHelperWrap.cs +++ b/Assets/XLua/Gen/BF_CharacterSpineHelperWrap.cs @@ -21,7 +21,7 @@ namespace XLua.CSObjectWrap { ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); System.Type type = typeof(BF.CharacterSpineHelper); - Utils.BeginObjectRegister(type, L, translator, 0, 23, 5, 2); + Utils.BeginObjectRegister(type, L, translator, 0, 24, 5, 2); Utils.RegisterFunc(L, Utils.METHOD_IDX, "Reload", _m_Reload); Utils.RegisterFunc(L, Utils.METHOD_IDX, "PlayAnimation", _m_PlayAnimation); @@ -44,6 +44,7 @@ namespace XLua.CSObjectWrap Utils.RegisterFunc(L, Utils.METHOD_IDX, "SetLocalScaleX", _m_SetLocalScaleX); Utils.RegisterFunc(L, Utils.METHOD_IDX, "SetMainSpineLocalPosition", _m_SetMainSpineLocalPosition); Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetAnimationDuration", _m_GetAnimationDuration); + Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetAnimationKeyFrameTime", _m_GetAnimationKeyFrameTime); Utils.RegisterFunc(L, Utils.METHOD_IDX, "SetDefaultMix", _m_SetDefaultMix); Utils.RegisterFunc(L, Utils.METHOD_IDX, "PlayAnimationAndPause", _m_PlayAnimationAndPause); @@ -703,6 +704,35 @@ namespace XLua.CSObjectWrap + return 1; + } + + } catch(System.Exception gen_e) { + return LuaAPI.luaL_error(L, "c# exception:" + gen_e); + } + + } + + [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] + static int _m_GetAnimationKeyFrameTime(RealStatePtr L) + { + try { + + ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L); + + + BF.CharacterSpineHelper gen_to_be_invoked = (BF.CharacterSpineHelper)translator.FastGetCSObj(L, 1); + + + + { + string _name = LuaAPI.lua_tostring(L, 2); + + var gen_ret = gen_to_be_invoked.GetAnimationKeyFrameTime( _name ); + LuaAPI.lua_pushnumber(L, gen_ret); + + + return 1; } diff --git a/Assets/arts/spines/characters/p0002/p0002.skel.bytes b/Assets/arts/spines/characters/p0002/p0002.skel.bytes index 29ac50d2f7896ac8cd450f027b42c172fab575da..1e754d64ebd5a391e2fdefd863c29599916d16cc 100644 GIT binary patch delta 750 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 Df11f% diff --git a/Assets/prefabs/spine/ui/characters/p0002.prefab b/Assets/prefabs/spine/ui/characters/p0002.prefab index 5a8680007..6b1ea7c91 100644 --- a/Assets/prefabs/spine/ui/characters/p0002.prefab +++ b/Assets/prefabs/spine/ui/characters/p0002.prefab @@ -156,7 +156,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - skeletonDataAsset: {fileID: 11400000, guid: 1c7297de721c6b84b8cb96644f5fd288, type: 2} + skeletonDataAsset: {fileID: 11400000, guid: 172156a70a38fef4585d133365f0170c, type: 2} additiveMaterial: {fileID: 0} multiplyMaterial: {fileID: 0} screenMaterial: {fileID: 0}