2017-03-28 3 views
0

RPG에 장착 할 수있는 모든 장비의 모든 데이터를 보유 할 데이터 구조를 만들려고한다고 가정 해보십시오.gml 데이터 구조에 여러 고유 배열 저장

기어의 한 조각은 길이가 C 인 고정 길이 배열, 길이가 0 < n < 5 인 가변 길이 배열, 문자열 및 실수의 네 가지 값으로 나타낼 수 있습니다. 나는 GML에 새로운 오전,하지만 내 성향이에 대한 2 차원 배열을 사용하는 것입니다 기어의 조각

2d_array[0, 0] = fixed_length[0] 
... 
2d_array[0, C-1] = fixed_length[C-1] 
2d_array[1, 0] = variable_length[0] 
... 
2d_array[1, n-1] = variable_length[n-1] 
2d_array[2, 0] = string 
2d_array[3, 0] = real_number 

모든을, 다음, 이와 같은 다양한 고유의 2 차원 배열 (이들의 수백에 의해 표현된다 하드 코딩 된 값 포함). 내가하고자하는 것은 ds_map (게임 시작시 생성 된 영구 컨트롤러 객체에 저장된 자체)과 같은 데이터 구조에 이러한 모든 배열을 저장하는 것입니다. 여기서 맵의 특정 키에서 얻은 값은 그 열쇠가있는 기어 조각. 같은 뭔가 :

gear_piece = ds_map_find_value(map, "key"); //do things with gear_piece as a 2d array 
gear_name = gear_piece[2, 0]; //e.g. 

내 문제는 내가 그 ds_map을 채우는 가겠어요 방법, 또는 그러한 데이터 구조를 만들 수 있습니다? 나는 때문에 GML의 이해 제 (초보자)에서, 설명이 필요한 및 배열이 어떻게 작동하는지, 다음 코드는 문제가있다 :

var 2d_array; 
2d_array[3, 0] = 3; 
2d_array[2, 0] = "Book of Life"; 

//now the variable-length array; for this piece of gear it is length 2 
2d_array[1, 1] = 26; 
2d_array[1, 0] = 10; 

//now the fixed-length array 
//SIZE is a macro for the length of the fixed-length array 

i = SIZE-1; 
repeat(SIZE) { 
    2d_array[0, i] = 0; 
    i -= 1; 
} //just initializes to zeros 

//hard-coded arbitrary gear values 
2d_array[0, 0] = 40; 
2d_array[0, 2] = 60; 

//now add a reference to 2d_array to the ds_map with a unique key for that piece of gear 
m_ds_gear[? "book-of-life"] = 2d_array; 

//do the same process for the next piece of gear 
2d_array[3, 0] = 1; 
2d_array[2, 0] = "Book of Death"; 
... 
2d_array[0, 1] = 20; 
m_ds_gear[? "book-of-death"] = 2d_array; 

//but now, since m_ds_gear["book-of-life"] just contains the id referencing 2d_array, 
//I haven't really stored multiple arrays, right? 
//I've just overwritten the old array values and stored a reference to it twice 

이 다른 문제는, 첫 번째 2d_array는 지역 변수임을되고도있다 , 데이터 구조의 참조는 스크립트가 실행을 마쳤을 때의 어떤 의미 일까? 나는 그렇게 생각하지 않을 것이다. 하지만 인스턴스 변수로 변경하더라도 여전히 덮어 쓰기 문제가 있으며 두 번째 배열을 모두 포함하도록 인스턴스 변수 수백 개를 명시 적으로 생성하는 솔루션은 gear Object를 사용하고 수백 개의 영구 보이지 않는 인스턴스를 만드는 것과 마찬가지로 어리석은 것처럼 보입니다. 위의 코드에 대한 제안이나 기어 데이터를 가장 잘 저장하는 방법에 대한 대안을 환영합니다.

관련된 참고 사항에서 설명서에 ds_lists 또는 다른 ds_lists 내에지도를 저장하는 것에 대한 참고 사항이 있지만 이는 JSON에서만 사용되는 것으로 나타났습니다. 다른 데이터 구조 내에 데이터 구조를 저장할 수 있습니까?

답변

0

저는 하나 또는 두 개의 ds_gridsenum을 사용하여 값을 찾는 데 사용할 내 자신의 사용자 지정 ID를 지정하여 일종의 의사 맵을 만드는 방법을 생각했습니다. 정의하기가 더 쉽지만 어느 방법 으로든 많은 코딩이있을 것이므로 지금 당장이 코드를 사용해 보겠습니다. 다른 의견도 환영합니다.