RPC Component
같은 방에 있는 유저들()이 특정한 메소드를 실행할 수 있도록 합니다.
해당 컴포넌트를 사용하려면 VivenNetworkObject 가 있어야 합니다.
RPC로 보내려는 메소드를 overload하지 않도록 주의해 주세요.
SendRPC
같은 방에 존재하는 유저들이 특정 메소드를 실행하도록 할 수 있습니다. RPCSendOption 으로 나를 포함한 모든 유저들 또는 나를 제외한 모든 유저들을 타겟으로 지정합니다.
-- 나를 포함한 모든 방의 유저들에게 보내는 경우
function rpc1()
--
local AllOption = RPCSendOption.All
local rpc = self:GetComponent(typeof(RPCComponent))
-- 필요한 parameter는 다음과 같습니다.
-- 1. 해당 rpc 코드를 작성하고 있는 스크립트 이름
-- 2. 실행하도록 하고 싶은 메소드 이름
-- 3. RPC option
-- 4. 실행하려는 메소드의 parameter. 사용 가능한 parameter 개수는 최대 5개입니다.
rpc:SendRPC("Test", "SendAll", AllOption, nil)
end
function SendAll()
-- 이 메소드는 나를 포함한 모든 유저들이 실행하게 됩니다.
end
-- 나를 제외한 모든 방의 유저들에게 보내는 경우
function rpc2()
--
local OthersOption= RPCSendOption.Others
local rpc = self:GetComponent(typeof(RPCComponent))
local table = {9, 1}
rpc:SendRPC("Test", "SendOthers", OthersOption, table)
end
function SendOthers(a, b)
-- 이 메소드는 나를 제외한 유저들이 실행하게 됩니다.
-- {9, 1}을 보냈으므로, a = 9, b = 1 입니다.
end
Lua
복사
SendTargetRPC
유저의 id를 입력하여 해당 유저가 특정 메소드를 실행하도록 할 수 있습니다. 유저의 id는 Network:GetRoomUserId 를 사용하여 알 수 있습니다.
function rpc3()
local players = {}
-- 닉네임이 "targetPlayerNickname"인 유저의 id를 받아옵니다.
players[1] = Network:GetRoomUserId("targetPlayerNickname")
rpc:SendTargetRPC("Test", "SendTarget", players, nil)
end
function SendTarget()
-- 닉네임이 "targetPlayerNickname"인 유저만 이 메소드를 실행하게 됩니다.
end
Lua
복사
Viven Rigidbody
해당 오브젝트의 Rigidbody 값을 설정합니다.
originMass
오브젝트의 질량(kg). 기본은 1
originDrag
오브젝트의 항력. 기본은 0 (공기 저항을 받지 않음)
originAngularDrag
오브젝트가 회전할 때 항력. 기본은 0.05
originCom
오브젝트의 질량 중심
Viven Grabbable Rigid View
VivenGrabbableMoudle이 붙어 있는 오브젝트를 동기화하기 위해 사용하는 컴포넌트
Viven Network Object
오브젝트를 동기화하기 위해 사용하는 컴포넌트
displayName
해당 오브젝트의 이름
objectId
오브젝트를 동기화할 때 사용하는 오브젝트의 id. 컴포넌트를 붙이면 자동으로 생성됩니다.
objectSyncType
오브젝트를 동기화하는 방식
•
Continuous : 오브젝트가 매 틱(tick)마다 동기화
•
Manual : 오브젝트가 지정한 타이밍에만 동기화
contentType
오브젝트의 Content Type