BindableEvent

개요

BindableEvent를 이용하여, 서버와 서버 또는 클라이언트와 클라이언트와 같이 같은 환경내 통신 처리를 구현할 수 있습니다.

BindableEvent 오브젝트

BindableEvent는 같은 환경간의 이벤트를 처리하기 위해 제공되는 오브젝트로 단방향 통신을 지원합니다.

💡 Tip. BindableEvent의 용도가 서버에서 서버로의 통신인지(Server to Server), 클라이언트에서 클라이언트로의 통신인지를(Client to Client) 명확히 구분하기 위해, 이름에 접두어S2S_ 또는 C2C_를 사용하는 것을 권장합니다. 이는 이벤트의 역할을 직관적으로 이해할 수 있게 하여 코드의 가독성과 유지보수성을 높입니다.

BindableEvent를 이용한 통신 구현

BindableEvent로 이벤트 발송시 인자(Arguments)를 함께 전송할 수 있습니다. 인자는 Fire 메서드 호출 시 전달되며, 수신 측에서 해당 데이터를 콜백 함수로 받을 수 있습니다.

Server ➡ Server

Script1에서

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local S2S_SomeEvent = ReplicatedStorage:WaitForChild("S2S_SomeEvent")

local function TestFire()
    local SomeText = "BindableEvents"
    S2S_SomeEvent:Fire(SomeText) -- Passing arguments
end

Script2에서

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local S2S_SomeEvent = ReplicatedStorage:WaitForChild("S2S_SomeEvent")

local function OnSomeEvent(text)
    print("[SomeEvent]", "Parameter : ", text)
end
S2S_SomeEvent.Event:Connect(OnSomeEvent)

Client ➡ Client

LocalScript1에서

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local C2C_SomeEvent = ReplicatedStorage:WaitForChild("C2C_SomeEvent")

local function TestFire()
    local SomeText = "BindableEvents"
    C2C_SomeEvent:Fire(SomeText) -- Passing arguments
end

LocalScript2에서

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local C2C_SomeEvent = ReplicatedStorage:WaitForChild("C2C_SomeEvent")

local function OnSomeEvent(text)
    print("[SomeEvent]", "Parameter : ", text)
end
C2C_SomeEvent.Event:Connect(OnSomeEvent)

Last updated