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
테이블 순회: ipairs 와 pairs
ipairs— 순차적인 정수 키(1, 2, 3…)에 대한 이터레이션pairs— 모든 키-값 쌍에 대한 이터레이션
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)을 제어해 봅시다.