[MSW] 메이플스토리 월드 알아두면 유용할 것들
2022. 12. 4. 20:31ㆍMSW
※ 본 포스팅은 MSW 공식 디스코드 채널에 있는 개발 가이드 영상의 내용을 정리한 글입니다.
- 엔티티 make child model 로 만든 차일드 모델과 오리지널 모델의 차이는
차일드 모델은 원본 오브젝트를 상속받게 되며 상속이라는 말에 걸맞게
원본 오브젝트에 컴포넌트가 추가되면 차일드 모델에도 동일하게 추가된다. - 모델은 유니티의 프리팹 개념과도 유사하다.
(차일드 모델 = 원본 프리팹에서 파생된 오브젝트)
(오리지널 모델 = 오리지널 프리팹) - 오리지널 모델이 아닌 차일드 모델은 독자적으로 자신의 컴포넌트를 제거할 수 없고,
오리지널 모델에서 지워야만 한다.
(유니티의 프리팹과 마찬가지로 Revert, Apply가 있다.) - self'.' 와 self':' 의 차이는 무언가를 지목하는 것과 무언가 호출하는 것의 차이이다.
따라서 콜백함수를 인자로 넘겨줄 때에는 함수라 해서 콜론을 쓰는 것이 아니라,
'.'을 쓴다. - _SpawnService:SpawnByModelId(id, name, position, self.entity.currentMap(부모설정), "")
로 유니티의 instantiate와 비슷한 기능을 수행할 수 있다. - 메월드에는 값타입과 참조타입이 있는데, 유니티에선 값 타입인 것이
메월드에선 참조 타입이라 의도하지 않은 커플링 작용이 이루어 질 수 있다.
예를 들어 메월드에서는 벡터가 참조타입이라 어떤 엔티티의 포지션 값만 가져오려 했던 것이
해당 엔티티의 포지션을 컨트롤하게 되어 버리기도 한다.
이 경우, 참조 타입의 값만 가져오고 싶을 때는 대상:Clone()을 사용하면
커플링 작용이 가상의 클론과 이루어져서 현실의 것은 그대로 보존할 수 있다. - 임시변수, wait메서드, 로컬펑션
- 프라퍼티보다 간단하게 임시변수를 만들어 쓰고 싶을 때는
self._T.변수이름 = 1 과 같은 방법으로 간단하게 선언해 사용할 수 있다.
_T 가 내부 임시 변수를 선언한다는 뜻임. - _EntityService:Destroy(self.Entity) 유니티의 Destroy Object 와 비슷한 기능.
- Wait() 메서드는 간단히 쓰기 아주 좋지만 다른 곳에서도 Wait를 쓰거나 복잡하게 얽히게 되면
처리가 의도한 대로 흘러가지 않는다. 따라서 이 경우에는
_TimerService:SetTimer(타이머를 실행하는 주체, 실행시킬 콜백함수, 반복시간빈도, 반복여부)
를 사용하는데, 이는 유니티의 InvokeRepeating과 비슷하다. - 로컬 멤버를 선언하여 사용하는 것과 마찬가지로 로컬 펑션을 사용할 수도 있다.
local function name() ~ end
이런 식으로 선언하는데, 이 펑션을 콜백함수 타입으로 메서드의 인자로 넘길 경우엔
self.를 쓸 필요가 없다.
'MSW' 카테고리의 다른 글
[MSW] 부분적 싱글 플레이 게임 개발을 위한 공부 (0) | 2024.08.02 |
---|---|
[MSW] 개발 팁 모음 (0) | 2023.01.05 |
[MSW] 메이플스토리 월드 UI 에디터의 이해 (0) | 2022.12.04 |
[MSW] 메이플스토리 월드 컴포넌트의 활용 (0) | 2022.11.15 |
[MSW] 메이플스토리 월드 Event의 이해와 컴포넌트 확장 (0) | 2022.11.11 |