Home
Development Environment

CustomView 작성 방법

SDKCustomSyncComponent와 VivenBehaviour를 사용해 CustomView를 구현할 수 있습니다.
VivenBehaviour에서 선언된 변수들은 각 클라이언트에서만 사용됩니다. 모든 클라이언트에서 상태를 동기화하기 위해서는 SDKCustomSyncComponent를 사용해 데이터를 동기화해야 합니다.
Sync는 다음 이벤트들을 기반으로 동작합니다.
initializeSyncVObject
초기화 시에 호출됩니다. 동기화하려는 데이터의 초기작업을 구현해 주세요.
sendSyncUpdate
데이터를 서버로 전송할때 호출됩니다. 해당 구현을 통해 동기화 할 데이터를 설정해 주세요.
receiveSyncUpdate
서버로부터 데이터를 받을때 호출됩니다. 해당 구현을 통해 동기화된 데이터를 처리해 주세요.
sendSyncFixedUpdate
데이터를 서버로 전송할때 호출됩니다. sendSyncUpdate와 다른 점은 Unity의 FixedUpdate 이벤트 위에서 작동합니다. Physic적인 동기화에 사용할 수 있습니다.
receiveSyncFixedUpdate
서버로부터 데이터를 받을때 호출됩니다. receiveSyncUpdate와 다른 점은 Unity의 FixedUpdate 이벤트 위에서 작동합니다. Physic적인 동기화에 사용할 수 있습니다.
각 이벤트 함수를 통해 데이터 동기화 시 행동을 구현할 수 있습니다.
예제는 다음과 같습니다.
-- 본 예제는 간단한 Transform Position 동기화 예제입니다. --@details 오브젝트 초기화 시에 불리는 함수입니다. function initializeSync() self.transform.position = Vector3(0, 0, 0) end ---@details 오브젝트의 소유권이 내것일 때 동기화 하고 싶은 Table을 리턴하면 됩니다. function sendSyncUpdate() -- 현재 transform position을 동기화하기위하여 테이블 리턴 local syncParam = {self.transform.position.x, self.transform.position.y, self.transform.position.z} return syncParam end ---@details 오브젝트가 내것이 아니면 동기화 받은 데이터 처리 로직을 작성 하시면 됩니다. function receiveSyncUpdate(syncTable) if (syncTable == nil or #syncTable < 3) then return end -- 동기화 받은 데이터로 transform 업데이트 self.transform.position = Vector3(syncTable[1], syncTable[2], syncTable[3]) end ---@details 소유권을 요청함 function requestOwnership() SyncComponent:RequestOwnership() end ---@return boolean ---@details 소유권이 나에게 있는지를 반환함 function getIsMine() return SyncComponent.IsMine end
Lua
복사

Fields

luaBehaviour

동기화를 수행할 LuaBehaviour입니다.
public VivenLuaBehaviour luaBehaviour

Field Value

viewSyncType

동기화 방법에 대한 타입입니다.
public SDKSyncType viewSyncType

Field Value