鑰匙框標記是用於代表最終會被發射的事件的實例,當 Keyframe 被擊中時。
使用鑰匙框標記
鑰匙框架標記應該總是被設為鑰匙框架的父級,通過直接設置父級或使用鑰匙框架的 Keyframe:AddMarker() 函數來設置父級。鍵框標記也可以直接移除或使用 Keyframe:RemoveMarker() 函數來檢查哪些標記被附加到特定鍵框,並使用 Keyframe:GetMarkers() 來檢查哪些標記被附加到特定鍵框。
當鑰匙框被偵測為正在運行的動畫時,將會對每個鑰匙框標記發射事件,該標記與鑰匙框相關。這些事件可以透過 KeyframeMarker 的名稱進行識別。您可以使用 AnimationTrack.GetKeyframeMarkerReached 函數來檢索和聆聽這些事件。可選擇設置 KeyframeMarker.Value 鑰匙框標記的屬性,以便傳送具有事件發射的值。
它從 Keyframe.Name 繼承了 Instance 的屬性,並且行為相同。名稱用於身份識別,不需要獨一無二。當多個具有相同名稱的 KeyframeMarker 實例附加到 Keyframe 時,由 AnimationTrack:GetMarkerReachedSignal() 返回的事件會為每個標記發射。
也見:
- Animation , 保留使用 Roblox 動畫系統在角色或其他模型上播放自訂動畫所需的動畫資料的參考
範例程式碼
這個例子展示了 Keyframe:AddMarker() 和 Keyframe:GetMarkers() 功能。添加兩個標記後, marker1 和 marker2 到鑰匙框,此例子獲得並列印添加的標記名稱。
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker1 = Instance.new("KeyframeMarker")
marker1.Name = "FootStep"
marker1.Value = 100
local marker2 = Instance.new("KeyframeMarker")
marker2.Name = "Wave"
marker2.Value = 100
keyframe:AddMarker(marker1) --標記。父 = 關鍵框
keyframe:AddMarker(marker2) --標記。父 = 關鍵框
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end
This LocalScript code waits for the local player's Humanoid object to load, then it creates a new Animation instance with the proper Animation.AnimationId. The animation is then loaded onto the humanoid, creating an AnimationTrack, and the track is played with AnimationTrack:Play(). Following that, the AnimationTrack:GetMarkerReachedSignal() function detects when the "KickEnd" marker is hit.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.Character:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- Create new "Animation" instance
local kickAnimation = Instance.new("Animation")
-- Set its "AnimationId" to the corresponding animation asset ID
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Load animation onto the humanoid
local kickAnimationTrack = humanoid:LoadAnimation(kickAnimation)
-- Play animation track
kickAnimationTrack:Play()
-- If a named event was defined for the animation, connect it to "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)
概要
屬性
Value
指定給 KeyframeMarker 的值。當從 AnimationTrack:GetMarkerReachedSignal() 創建的信號被發射時,此值將傳到連接的函數中。
也見:
範例程式碼
這個例子展示了 Keyframe:AddMarker() 和 Keyframe:GetMarkers() 功能。添加兩個標記後, marker1 和 marker2 到鑰匙框,此例子獲得並列印添加的標記名稱。
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker1 = Instance.new("KeyframeMarker")
marker1.Name = "FootStep"
marker1.Value = 100
local marker2 = Instance.new("KeyframeMarker")
marker2.Name = "Wave"
marker2.Value = 100
keyframe:AddMarker(marker1) --標記。父 = 關鍵框
keyframe:AddMarker(marker2) --標記。父 = 關鍵框
local markers = keyframe:GetMarkers()
for _, marker in pairs(markers) do
print(marker.Name)
end
這個例子展示了 Keyframe:AddMarker() 和 Keyframe:RemoveMarker() 功能。注意這些功能上與 parenting 相等,並取消標記的父級。
local keyframe = Instance.new("Keyframe")
keyframe.Parent = workspace
local marker = Instance.new("KeyframeMarker")
marker.Name = "FootStep"
marker.Value = 100
keyframe:AddMarker(marker) --標記。父 = 關鍵框
task.wait(2)
keyframe:RemoveMarker(marker) --marker.Parent = nil