조회 수 506 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요, MV 툴을 다루다  스크립트를 통해 생성한 정보들이 어떻게 유지되나 테스트하기위해

 

MV에서 기본 제공하는 save를 해보려했는데

 

Error: Object too deep {stack: (...), message: "Object too deep"}

 

와 같은 메시지가 뜨더군요,

 

구글링과 해외 MV포럼을 뒤져본뒤, 제가 짜넣은 코드들을 살펴본결과 다음과같은코드가 문제였습니다.

 

Sprite_Character.prototype.setCharacter = function(character) {
    this._character = character;
    character._sprite = this;
};

 

Sprite_Character 가 참조를 하게될 Game_Character 객체를 set하는 함수입니다.

기존 MV 코드의 대부분이  Sprite객체가 Game 객체를 알고, 그 역은 알지못하는 관계로 짜여져있긴한데

기능상의 편의를위해 진한색 부분을 추가하여 역참조도 가능하게 하였습니다.

 

MV에서 저장시 어떤방식을 하는지는 확실히 모르겠으나 저러한 참조로 인해 저장정보가 참조의 참조로 스택이 무한으로 쌓여서

에러가 나는것 같습니다..

 

일단 수정한다면 

var GlobalVar = GlobalVar || null;

Sprite_Character.prototype.setCharacter = function(character) {
    this._character = character;
    GlobalVar = this;
};

 

위와같은 방식으로 가능할것으로 보이긴 합니다만, 전역변수를 쓰지않고

혹시 가능한 방법이 있을까싶어서 질문글 올립니다.

 

?
  • profile
    lklslel 2016.12.20 20:54
    hoguduk님께서 작성하신 부분이 문제가 되는 것은..

    Sprite_Character._character = character

    와 같은 의미인

    this._character = character;

    로 작성을 해두시고

    character._sprite = this;

    로 지정을 해두시고 게임이나 기타 등등의

    활동에는 지장이 없을 겁니다만...


    이를 데이터로서 저장하려고 JSON문자로

    변환하려고 할 때에 문제가 발생합니다...

    JSON문자로 변환할 때에 고리형식의

    데이터 참조가 이루어질 경우에 이를

    몇 회이상 시도하다가 할 수 없다는 판단을

    하게 되면 Object Too Deep 에러를 띄웁니다.


    이런 경우의 해결책은 해당 Sprite_Character의

    식별 ID나 인덱스 번호를 저장하는 것이 바람직합니다.


    실제 RPG MV의 스크립트 구조를 살피다 보면

    알 수 있는 점입니다만, 직접적으로 데이터에

    접속시켜놓은 것이 아닌 ID로 접근하는 방식은

    데이터의 저장시 참조하는 외부 데이터로만

    취급이 되기에 문제없이 저장이 되는 겁니다.



    그러므로 hoguduk님께서도 스크립트를 작성하실

    때에 RPG MV상의 암묵적인 시스템의 룰을

    지키시는 것이 에러를 적게 발생시키고 최적화도

    비교적 쉽게 할 수 있는 지름길입니다.


    일반적인 상황에서 javascript로 작성한 후

    Object Too Deep 에러를 발생시켜 볼 수 있는

    경우는 스스로를 반복적으로 호출하여

    목표달성 / 연산을 하는 재귀식 객체접근법에서

    찾아볼 수 있습니다.



    객체에 접근하여 데이터를 얻기 위해서

    여러번 반복적으로 일정 횟수(일정 시간) 이상

    경과하게 되면 발생하는데... 일반적으로는

    그렇게 작성해서 사용할 방법을 알지 못하기에

    RPG MV에서 해당 에러가 발생한 경우는

    직접적인 데이터 접근에 따른 고리형태의

    데이터 순환이 지속된다고 보시면 되겠습니다.



    데이터를 찾으려고 메모리 주소를 따라가지만

    같은 곳을 멤도는 무한 루프와도 같은 상황이

    발생했을 시에 일어나기 때문에 결코 가볍지

    않은 에러이기도 해서 해당 에러를 발생시킬만한

    실행 스크립트는 되도록이면 회피하는 것이

    바람직하다고 할 수 있습니다.



    회피하는 방법 중의 하나는 Id 값을 다음과 같이 집으시면 됩니다.

    SceneManager._scene._spriteset._characterSprites[0].spriteId

    와 같은 형태로 spriteId를 얻으실 수 있습니다.



    hoguduk님께서무엇 때문에 Sprite_Character를

    character._sprite로 집으시려는지는 제가 알 수가

    없기에 추가적인 정보는 드릴 수 없을 듯합니다.
  • ?
    huguduk 2016.12.20 21:13
    글을 두서없이 쓰다보니 말머리에 빼먹었네요.. 말씀하신것처럼 평소에는 상관없다가 저장을 할때만 발생하는 문제입니다ㅎㅎ;

    spriteId라는 고유 키가 있는지몰랐네요.. 지금살펴보니 Sprite 객체에서 정의되있군요 정말감사합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
8724 네코플 광고 질문 2 세종군(카브에트) 2017.05.26 124
8723 RPG XP에서 장비 화면의 호출은 어떻게 하나요? 1 file 심심치 2017.05.22 412
8722 제가 만든 게임을 리뷰 하려고 하는데요. 6 1324의남자 2017.05.18 959
8721 [질문]RPG MV 식물 재배에 관한 이벤트인데 문제가 있어 질문합니다! [이미지첨부] 3 file MoonJ 2017.05.18 499
8720 [RPGMV] 초보자 질문합니다^_^ 5 MoonJ 2017.05.17 545
8719 건물위에서 데미지를 안받게 하려면 어떻게 해야 하나요? 5 1324의남자 2017.05.16 552
8718 조건이 있는 대화중 esc를 누르면 두번째 조건이 선택되네요. 왜 그럴까요? 3 file 정의오타쿠 2017.05.16 548
8717 웹으로 배포했는데 세이브파일을 따로 저장할 수 없을까요?? 5 카라스노오 2017.05.15 546
8716 알만툴 게임 만들어서, 수입을 많이 낼수있을까요? 6 문방구 2017.05.10 1231
8715 MV 에서 해상도변경 플러그인 쓰니 메뉴가 잘려요; 3 file 문방구 2017.05.09 549
8714 이동 경로 설정하고 액터가 움직이네요 6 준E 2017.05.09 708
8713 쯔꾸르게임에관해서... 2 난이 2017.05.07 610
8712 rpg mv 쪽 쯔꾸르 모바일 세이브 위치가 어디인가요 뽕뽀로루 2017.05.07 152
8711 스크립트를 활용해서 운이라는 능력치를 무효시키는 방법은 없나요? RPG란무엇인가? 2017.05.06 158
8710 이 사이트에 게시판 몇개가 가려져서 클릭을 못하겠는데 이런 경우엔 어떻게 해야 하나요? 2 file wwlekd 2017.05.05 564
8709 ?이게뭐죠? 앱 오륜가? 플레이스토어 앱 제출 오류. 이상하면 앱 보내드려요 5 file 새준 2017.05.04 567
8708 MV게임으로 구글 플레이스토어 인앱결제를 넣을수 있을까요? 7 huguduk 2017.05.01 1046
8707 알만툴 변수 알고리즘을 잘 모르겠어요. 왜 조건문 실행이 안될까요? 11 참몰랑 2017.04.28 1224
8706 [MV] 비 스팀 판은 DLC 사용 못하나요? 2 MV초보자 2017.04.28 577
8705 MV에서 사용자 말풍선 아이콘을 추가 하려면 어케 해야할까요? 6 참몰랑 2017.04.25 828
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 437 Next
/ 437






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)