공부하는 Nar

 

변수/함수의 선언 방법 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 --해당 플레이어에게 값 할당

profile

공부하는 Nar

@NarS2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!