1. ホーム
  2. lua

[解決済み] "Unable to cast value to Object" エラーメッセージ

2022-02-14 03:53:27

質問内容

リモート関数を使用しているのですが、なぜか通常の変数への代入がうまくいかず、「Unable to cast value to Object」というエラーメッセージが表示されます。

local storeEvent = script.Parent.Parent.OpenStore
local slotNum = 1
script.Parent.Touched:Connect(function (hit)
    if game.Players:GetPlayerFromCharacter(hit.Parent) then
        storeEvent:InvokeClient(slotNum)
    end
end)

を実行し、もう一方のスクリプトに接続します。

script.Parent.OnInvoke:Connect(function (slot)
    local StoreArrows = game.ReplicatedStorage.StoreArrows
    StoreArrows.SlotNum.Value = slot
    local cam = game.Workspace.Camera
    local storeButtons = script.Parent
    local camNum = game.ReplicatedStorage.StoreArrows.CamNum.Value
    local camNumInst = game.Workspace.CamStorage:WaitForChild("Cam-"..camNum)
    cam.CameraType = Enum.CameraType.Scriptable
    cam.CFrame = camNumInst.CFrame
    local clonedStoreButtons = StoreArrows:Clone()
    clonedStoreButtons.Parent = player.PlayerGui.ScreenGui
end)

解決方法は?

一度に多くのクライアントがサーバーに接続することに留意してください。そのため RemoteEventのInvokeClient 関数に どの クライアントを呼び出します。の最初のパラメータは InvokeClient をキャストできないというエラーが表示されるのはそのためです。 slotNum の値をプレイヤー・オブジェクトに変換します。

local storeEvent = script.Parent.Parent.OpenStore
local slotNum = 1
script.Parent.Touched:Connect(function(hit)
    -- check that the thing that we touched is actually a player
    local player = game.Players:GetPlayerFromCharacter(hit.Parent)
    if player then
        -- tell that player to open the store
        storeEvent:InvokeClient(player, slotNum)
    end
end)