ABOUT ME

천리 길도 한 걸음부터

Today
Yesterday
Total
  • 로블록스 루아 스크립트
    로블록스/첫 프로젝트

    안녕하세요!

     

    로블록스에 어떤것 부터 작성하면 좋을까 생각을 해봤는데

     

    가장 먼저 rua 스크립트의 기초에 대해서 알아보려고 합니다.

     

     

    유니티의 게임을 만들기 위해선 유니티엔진의 c# 언어를 사용 하는것을 아실겁니다.

     

    로블록스 게임을 만들기 위해선 로블록스 스튜디오의 Lua 언어를 사용 한다고 보시면 됩니다.

     

     

    가장 큰 차이로는

     

    Lua 는 인터프리터 언어로 간단한 문법을 사용하며

    c#은 컴파일 언어로 객체 지향 구조를 사용한다고 합니다.

     

    또한 

     

    Lua는 가벼운 성능으로 소규모 프로젝트에 적합

    c#은 고성능 처리 가능, 비교적 대규모 프로젝트에 적합 하다고 합니다.

     

    보다 더 많은 차이점은 조금만 찾아봐도 알 수 있기에, 이러한 지식 보다는

     

    직접 겪고 느낀것들을 바탕으로 작성하도록 하겠습니다.

     


     

    가장 처음 느낀것은 Lua 스크립트의 배열은 인덱스 1번부터 시작하는것 이였습니다.

     

    Lua의 number[1]과

    c#의 number[0]은

    같은 의미를 나타냅니다.

     

    즉, Lua에서 첫번째 요소에 접근을 하려면 인덱스 1부터 시작해야 한다는 점입니다.


     

    두번째로 느낀것은 

    Lua 스크립트의 모든 데이터 구조는 table로 한다는 것 입니다.

    이게 명확하게 와닿지 않을수가 있는데, 단순하게 말해서

     

    c# 같은 경우엔 List, Dictionary, Array 등 데이터 구조에 따라 고유한 자료형이 있는것을 Lua 에서는 table 구조로 모든것을 대체 한다고 생각하시면 됩니다.

     

    이게 어찌보면 편리하다고 느끼면서도 자유를 주는 대신. 현재 하고자 하는것, 그리고 목표와 기능의 명확성을 보다 확실하게 알고 써야 한다는것을 느꼈습니다.


     

    세번째로 느낀것은

     

    변수를 선언할때 타입을 명시하지 않는다는 점 입니다.

    c#의 경우 int a = 0, string s = "Hello" 와 같이 타입을 명시한다면

     

    Lua 스크립트는 local a = 0, local s = "Hellow" 와 같이

     

    뒤에 오는 값에 따라 타입이 달라지며, 기본적으로 초기화 하지 않은 변수는

     

    nil 값을 가졌습니다.

    (c#에서 null 처럼 비어있다는 뜻 입니다)

     

    타입을 신경쓰지 않는것은 선언한다는것은 좋은점 같으면서도 단점이 무엇일까 생각을 해보았습니다.

     

    타입이 지정되어 않다보니 런타임 전까지 오류가 발생이 안들수도 있다?

     

    코드의 가독성을 이해하기가 한 눈에 이해하기가 어렵다?

     

    등등 많은 단점도 찾으면 많은 이유가 있겠지만

     

    개발을 2인이서 했기에, 크게 불편하다기 보다는 오히려 편리함을 느꼈었습니다.

     


     

    네번째로 모든 함수는 function 키워드를 사용했던점 입니다.

     

     

    returnType을 정해주는 c#과는 다르게 function 키워드로 해결을 하였습니다.

     

    Lua에서 모든 함수는 리턴값 을 지정하지 않고, function (FunctionName) 으로 선언을 합니다.

     


     

    다선번째로는

     

    c#의 코드 블록 첫 시작과 마무리를 사용한다면  Lua에서는 end를 사용했었습니다.

     

    위 사진을 보면  function 마침표 부분에도 end가 들어간 것을 볼 수 있습니다.

     

     

    if - elseif 문도 끝 마침에 end를 붙여 주었습니다.

     


     

    여섯번째로는 

     

     

    c#의 && 연산자나 || 연산자를

    Lua 에서는 and 나 or 을 사용했습니다.

     

    이러한 것들을 제외하고 for 반복문의 범위 설정이 약간 다르다?? 이정도 등이 있었지

     

    프로그래밍을 하는건 크게 다를바가 없어서 쉽게 적응을 할 수 있었습니다.

     


     

     

    이 이외의 것들은 하나씩 개발하면서 글을 작성할때

     

    그때그때 올리도록 하겠습니다.

     

     

    감사합니다.

    '로블록스 > 첫 프로젝트' 카테고리의 다른 글

    로블록스 데이터 저장  (0) 2024.11.11
    로브록스 재미 요소 추가  (0) 2024.11.11
    로블록스 텔레포트  (0) 2024.11.05
    로블록스 스튜디오 작업공간  (0) 2024.11.02
    로블록스  (0) 2024.11.01

    댓글

김효겸 / Tel. 010-7735-0580 / E-mail. dollzzang2@hanmail.net