변수/함수의 선언 방법 3가지
1.
: local = 지역 변수/함수 (같은 스크립트 안에서)
ex)
local a = 5
print(a)
2.
: 생략 = 글로벌 변수/함수 (같은 종류의 모든 스크립트에서)
ex)
b = 5
print(b)
3.
: Script.(변수이름) or Script:(함수이름) = 공개 변수/함수 (같은 종류의 모든 스크립트에서)
ex)
Workspace.Cube1.Var = 5
print(Workspace.Cube1.Var)
: 할당을 자기 자신한테 했을 때
ex)
Script.var = 12
공개변수 사용 가능한 객체
: Player, Character, Game, StaticMesh, Script, Table
→ 모두 같은 종류의 스크립트에서 불러오기 가능
공개변수 접근을 밖에서 할 때
: 경로 지정을 안해주면 ServerScript가 2개 있을 경우, ServerScript1, ServerScript2이기 때문에
ServerScript1에 공개 함수 Script.var 를 ServerScript2에 print(Script.var)로 하면 오류가 난다.
왜냐면 ServerScript2에서 Script.var 를 불러왔기 때문에
Script.var의 Script는 ServerScript1이 아닌 ServerScript2를 의미하기 때문이다.
print(Workspace.ServerScript1.var) 로 정확히 경로를 지정해서 불러와야 된다.
예외.
: Game.공개변수
Game은 계층 상관없이 어디서든 접근 가능한 글로벌 객체이기 때문에 Game.공개변수로 바로 할당 및 참조가 가능하다.
다른 스크립트에서 사용할 때, 계층 탐색을 안해줘도 된다. (내부적으로 글로벌로 선언된 객체라고 보면 된다.)
ex)
같은 이름의 공개변수를 각각 만들면 ServerScript > Game.Example / ClientScript > Game.Example
동기화가 되지 않기 때문에 서버, 클라 별개로 구분하여 사용할 수 있다.
동기화를 하고 싶다면 제작가이드 > Sample 맵 참고!
: 속성 값 수정 불가
디토에서 공개변수를 속성으로 지정한 경우,
예를들어 LocalPlayer의 속성 값인 .Parent 이런거는 수정이 불가능하다.
참고.
: Script.공개변수
Script는 스크립트 자기 자신을 가리켜서 자기꺼는 바로 탐색이 가능하지만
다른 스크립트꺼 참조할 땐 탐색을 해줘야 한다. (따라서 다른 스크립트거 참조할땐 ~.~.ScriptName 으로 접근하는것)
: Player, Character. 공개변수
해당 객체를 반환하는 함수로 가져온 다음, 거기에 지정하는 개념이다.
ex)
local p1 = Game:GetAllPlayer()[1] --첫번째 플레이어 가져와서
p1.someVar = 1 --해당 플레이어에게 값 할당
'LuaScript' 카테고리의 다른 글
이벤트 : CreateObject, DeleteObject, OnDestroyEvent (0) | 2022.03.03 |
---|---|
string.sub : 루아 문자 분할 (0) | 2022.03.03 |
테이블: table.insert, 공개변수로 추가 (0) | 2022.01.13 |
테이블: CSV, [[]], string.gsub (0) | 2022.01.12 |
테이블: 인덱스, 속성(키) (0) | 2022.01.12 |