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 29ac50d2f..1e754d64e 100644 Binary files a/Assets/arts/spines/characters/p0002/p0002.skel.bytes and b/Assets/arts/spines/characters/p0002/p0002.skel.bytes differ 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}