Beginner읽기 시간: 8분최근 수정: 2026. 4. 14

Viven Script 이용하기

Viven Script는 Lua 기반의 런타임 스크립트 언어입니다. 변수 선언, 함수, 반복문, 조건문 등 Lua 기본 문법과 Unity Event Function 사용법을 소개합니다.

VIVEN SDK는 Unity Editor 위에서 동작하지만, VIVEN 클라이언트는 il2cpp 로 컴파일 되어 있기 때문에 C# 스크립트는 런타임에서 실행되지 않습니다. 대신 Viven Script 라는 Lua 기반 스크립트를 VIVEN Runtime 의 Lua 엔진에서 해석·실행합니다.

변수 선언하기

Lua는 선언과 동시에 값을 지정할 수 있습니다. 함수 내부에서 전역변수를 선언하는 것도 가능합니다.

local someVariable        -- nil을 기본값으로 하는 지역 변수
someVal = 10              -- 전역 변수 선언

function someFunc()
  someValInFunction = 20      -- 함수 안에서도 전역 변수 선언 가능
  local someLocalVariable     -- 이 함수에서만 사용되는 지역 변수
end

someFunc()
print(someValInFunction)   -- 20
print(someLocalVariable)   -- nil (스코프 밖이라 접근 불가)

someValInFunction = nil    -- nil을 대입하면 전역 변수를 지울 수 있음

함수 선언하기

function ... end 로 함수를 정의합니다. end 를 빠뜨리지 않도록 주의하세요.

function someFunction()
  print("test")
end

-- 변수에 함수를 넣어 선언할 수도 있습니다
someFunction = function()
  print("test")
end

someFunction()  -- "test" 출력

주석 사용하기

local x -- 문장 뒤에 한 줄 주석

-- 줄 맨 앞의 주석은 그 줄 전체가 주석 처리됩니다

--[[
  여러 줄 주석은 이렇게
  블록 형태로 작성합니다
--]]

--[[ 블럭 안에 있는 내용을 주석으로 만들 수 있습니다 ]]--

반복문

숫자 기반 for 루프

-- 1부터 5까지 출력
for i = 1, 5 do
  print(i)
end

-- 1부터 10까지 2씩 증가 (홀수만 출력)
for i = 1, 10, 2 do
  print(i)
end

테이블 순회: ipairspairs

local arr = { "apple", "banana", "cherry" }
for i, v in ipairs(arr) do
  print(i, v)
end

local tbl = { name = "John", age = 25, country = "KR" }
for k, v in pairs(tbl) do
  print(k, v)
end

while / repeat-until

local count = 1
while count <= 5 do
  print("Count: " .. count)
  count = count + 1
end

-- repeat-until 은 do-while 과 비슷합니다
local n = 1
repeat
  print("n = " .. n)
  n = n + 1
until n > 5

조건문 (if)

local age = 15
if age >= 18 then
  print("성인입니다.")
else
  print("미성년자입니다.")
end

elseif 를 이용한 다중 분기:

local score = 75
if score >= 90 then
  print("A")
elseif score >= 80 then
  print("B")
elseif score >= 70 then
  print("C")
else
  print("D")
end

nil 검사와 단락 평가:

local x = nil
if x and x > 10 then
  print("x는 10보다 큽니다.")
else
  print("x는 nil이거나 10 이하입니다.")
end

Unity Event Function

Viven Script 에서는 Unity의 주요 Event Function 을 소문자 함수로 그대로 받아서 사용할 수 있습니다.

function awake()
  -- Unity Awake 시점에 한 번 호출됩니다
end

function start()
  -- 첫 프레임 직전 한 번 호출됩니다
  print("Hello, VIVEN!")
end

function update()
  -- 매 프레임 호출됩니다 (무거운 연산 주의)
end
💡
꿀팁:

update() 안에서 무거운 연산을 수행하면 프레임 드랍이 발생합니다. 반복 작업은 코루틴 또는 이벤트로 분리하세요.

다음 단계

Viven Script의 기본 문법을 익혔다면, 이제 Lua 안에서 Unity 기능(GameObject, Transform, Component)을 제어해 봅시다.