Model
스크립트
원본참조 vs 사본참조
실행제어 주의할 점
지역변수 선언
동적 Entity생성
MOD에서 제공하고있는 Entity의 원본으로 Component와 Property를 기본적으로 탑재하고있다.
Model List에서 카테고리별로 다양한 Model들을 확인하고 추가할 수 있다.
ex) object, npc, monster, background 등
--> 나만의 Model을 만들고 싶다면? 모델화!
cf) Make Child Model 과의 차이?
--> 부모 모델에 컴포넌트를 추가해되면 자식모델에도 추가되게된다.
--> 자식 모델에서는 컴포넌트를 삭제할 수 있는 기능인 Remove Component를 제공하지 않는다.(Add Component기능은 제공)
--> Apply VS Revert
--> Apply : Entity에 추가한 기능을 -> Original모델에 적용할때
--> Revert : Original모델에 변경사항을 -> 특정 Entity에 반영할때
ex)
--> position.x = position.x + 1을 KeyDownEvent로 등록되었을 때 실제로 Entity가 x축으로 1만큼 이동하는것을 확인해볼 수 있다.
--> 만약 단순히 값을 참조만 하고싶다면? Clone()을통해 사본참조!
--> return 값이 존재할 경우 함수가 상호간에 호출이 가능한 공간인지의 여부를 확인해야한다.
ex)
--> Function2는 server only이므로 server로부터 호출이 가능하다.
--> Function3는 client only이므로 server로부터 호출될 수 없다. -> 값을 받을수가 없다.
--> self._T.변수명 을통해 함수안에서만 사용할 수 있는 지역변수를 선언할 수 있다.
HandleKeyDownEvent : 'A'키가 눌릴때마다 이벤트가 발생하도록 작성
Spawn : _SpawnService에서 SpawnByModelId를통해 동적생성을 원하는 Entity의 정보를 작성한다.
--> ("Entity Model Id", "생성될 Entity 이름", "생성위치", "부모 Entity")
--> 이벤트가 한번 발생할때마다 Property의 NewValue1의 값을 1씩 증감시켜서 Spawn되는 X값의 위치를 1씩 더해주었다.
--> 'A'를 6번눌렀을 때 동적으로 생성된 pig Entity의 모습
cf) 이벤트가 발생할때마다 Vector3에서 x값이 1씩 증가함에따라 차례로 생성된 Entity의 모습
--> wait()의 문제점?
--> 여러 다른곳에서 wait()을 사용하게되면 사용한만큼 딜레이가 되어 의도했었던 결과물, 타이밍이 안나올 수 있다.
따라서, _TimerService사용!
--> local function으로 선언
--> Callback함수에 self키워드를 쓰지않은 이유 : 지역으로 선언된 함수를 호출하였기 때문이다!
cf) Callback? 주기적으로 실행시킬 대상(함수)
--> 기본적으로 Entity에 Trigger Component를 추가하게되면 BoxSize, offset영역이 Entity크기에 알맞게 자동으로 설정이 된다.
하지만, 스크립트에서 컴포넌트를 추가(동적생성)하게되면 BoxSize와 offset영역을 자동으로 설정해주지 않으므로 수동으로 입력을 해주어야한다.