안녕하세요.
요즘 스튜디오에 루아 스크립트를 지원하네요
간단한 팁남기도록 하겠습니다.
* 특징
1. 프로그램 내장 스크립트이다.
2. 프로그램과 통신해 데이터 교환 API 상호 호출이 가능하다.
3. C 언어나 C++언어 인식이 쉽다.
4. 다른 스크립트보다 가볍다.
정도 입니다.
여기서 가볍다는 적은 데이터형을 지원하지만 용량과 속도의 부담이 적어지게 됩니다.
* 문법
Lua는 전역 변수를 기본으로 합니다.
(전역 변수는 어떤 변수 영역 내에서도 접근할 수 있는 변수를 의미하는 전산학 용어이다. 지역 변수와 대비되는 개념이다. 어떤 스코프에서도 참조하고, 변경할 수 있기 때문에 지역성이 없다.)
nill = null
(여기서 null 이란? '값이 없음'을 나타내는 영단어입니다. 값이 없다는 것은 그 값이 0조차 아니라는 뜻이죠)
JAVA나 C같은 다른 언어는 null을 사용하지만 Lua에선 nill를 대신 사용합니다.
string
문자열 처리
예를들어
string myString = "abcd";
정도가 있군요 myString안에 문자 abcd를 넣는다는 의미입니다.
number
정수, 소수를 구분하지 않고 모든 숫자를 실수형으로 처리합니다.
예를들어
실수형 변수
float frnum = 3.141593f;
double drnum = 3.141592653589793;
보통 C나 Java에선 실수형 float나 double을 사용합니다.
frnum 에 실수값 3.141593f; 값을 넣기 위해 실수형을 선언해줍니다.
자바나 C같은 경우 실수를 선언하기위해 위와 같이 float를 사용하거나 double을 선언 해야하지만 lua에서 number를 사용하는것을 볼 수 있습니다.
table
number형과 string 모두 인덱스 할수 있습니다.
이것은 변수가 아니라 객체로봅니다.
boolean (true, false) 논리 자료형
논리 자료는 말 그대로 논리로직을 사용하여 판단합니다.
예를들어
if (my_variable != 0) {
printf("True!
");
} else {
printf("False!
");
}
my_variable, 이것이 != 0, 0과 다를(아닐경우) 경우
출력 결과 :0이 아닐 경우 = printf(True를 출력), 0일 경우 = printf(False)가 되겠군요
Lua에 적용시키려면
------------------------------------
if(조건) than(실행)
else if(조건) than(실행)
else(실행)
end
-------------------------------------
이와 같은 형식이 되어야겠군요.
현재 인게임 루아 튜토리얼
game.lua을 열어
가장 처음 보이는 소스를 잠깐 설명하고 마치겠습니다.
여기서 --[[ ]] 이 형식은 게임에 아무런 영향이 없는 메모(주석)입니다.
--------------------------------------------
--[[
1. 플레이어의 수치 변경
- 버튼으로 플레이어의 수치를 변경하기
]]
button1 = Game.EntityBlock.Create({x=-42, y=-24, z=2})
button1에 Game.EntityBlock.Create X Y Z 값을 넣습니다.
function button1:OnUse(player)
function기능 아까 XYZ 값을 가진 button1을 On되었다면(플레이어가) 아래와 같은 판단문에 진입합니다.
(판단문)if self.onnexon true then
이것이 on(위), off(아래) 되었을 경우
player.health = 10 (health=체력을 10으로)
player.armor = 10 (armor=방어를 10으로) (on 상태)
else
player.health = 100 (health=체력을 10으로)
player.armor = 100 (armor=방어를 10으로) (off 상태)
end
end 판단문 처리후 if에서 빠져나갑니다.
---------------------------------------------
+ 이중 if문
if (조건식1) then
코드1
elseif (조건식2) then
코드2
elseif (조건식 3) then
코드3
...
else
코드n
end
-----------------------------------------