मैं एकता में एक गेम बना रहा हूं जो एक 2D Minecraft कैसे काम करेगा, इसी तरह की दुनिया को प्रक्रियात्मक रूप से उत्पन्न करने के लिए टिलमैप्स का उपयोग करता है। मेरे पास दो वर्ग हैं: खंड जो 16x16 int सरणी है जिसमें टाइल की जानकारी है, और क्षेत्र जो 3x3 खंड सरणी है। टाइलमैप पर टाइल लोड करने के लिए चंक्स का उपयोग किया जाता है और JSON फ़ाइलों में डेटा को सहेजने और लोड करने के लिए क्षेत्रों का उपयोग किया जाता है। जब कोई खिलाड़ी खेल रहा होता है, तो उनके वर्तमान चंक के चारों ओर एक 3x3 चंक क्षेत्र लोड होता है और उनके वर्तमान क्षेत्र के आसपास एक 3x3 क्षेत्र लोड होता है। निम्नलिखित वर्ग है:

//Stores tile data of a chunk
[Serializable]
public class Chunk
{
    public int[,] tiles = new int[CHUNK_SIZE, CHUNK_SIZE];
}

//Stores Chunk data of a region
[Serializable]
public class Region
{
    public Vector2Int location;
    public Chunk[,] chunks = new Chunk[REGION_SIZE, REGION_SIZE];
}

निम्नलिखित कोड है जो एक क्षेत्र उत्पन्न करता है, भाग भरता है, और फिर इसे क्रमबद्ध करता है:

Region region = new Region();
    region.location = new Vector2Int(x, y);
    for (int i = 0; i < REGION_SIZE; i++)
    {
        for (int j = 0; j < REGION_SIZE; j++)
        {
            region.chunks[i, j] = GenerateChunk();
        }
    }
    string regionJson = JsonUtility.ToJson(region);

मेरी समस्या यह है कि परिणामी क्षेत्र जेसन स्ट्रिंग में केवल स्थिति की जानकारी होती है, न कि भाग की जानकारी। मुझे पता है कि JsonUtility न्यूनतम है और इसमें सरणियों की समस्या है, हालाँकि मैंने सोचा कि एक वर्ग के भीतर एक सरणी लपेटने से यह समस्या हल हो जाती है। जो मैं समझने की कोशिश कर रहा हूं वह यह है कि यदि समस्या एक सरणी युक्त चंक वर्ग से है, तो क्षेत्र वर्ग जिसमें भाग की एक सरणी है, या कुछ और पूरी तरह से है। किसी भी मदद की बहुत सराहना की जाती है!

-1
David Meyenberg 27 अक्टूबर 2021, 21:16
2
JsonUtility बहु-आयामी सरणियों के क्रमांकन का समर्थन नहीं करता है। मुझे लगता है कि आप वर्कअराउंड के लिए यहां जांच कर सकते हैं: .com/questions/58559529/…
 – 
BFyre
27 अक्टूबर 2021, 22:19
2
बाकी उपयोग के लिए बिल्ट-इन समर्थित प्रकारों के लिए Script Serialization पढ़ें ... Newtonsoft JSON.Net (अब तक पैकेज प्रबंधक के माध्यम से पैकेज के रूप में आता है) या अन्य तृतीय पक्ष पुस्तकालय
 – 
derHugo
27 अक्टूबर 2021, 22:28
बहु-आयामी सरणी समर्थित नहीं होने के बारे में कुछ भी नहीं देखा। स्पष्टीकरण और जुड़े समाधान के लिए धन्यवाद!
 – 
David Meyenberg
27 अक्टूबर 2021, 23:25

1 उत्तर

सबसे बढ़िया उत्तर

मैं इस परिदृश्य में JsonUtility का उपयोग करने के लिए वर्कअराउंड बनाने के लिए अपने बालों को नहीं खींचूंगा जब JsonNet इसे केवल मेरे लिए करता है।

using Newtonsoft.Json;
string regionJson = JsonConvert.SerializeObject(region);

मैंने कुछ नकली डेटा उत्पन्न करके आपके परिदृश्य का परीक्षण किया है और यह बहु-आयामी सरणियों के साथ पूरी तरह से काम करता है।

1
Srejon Khan 27 अक्टूबर 2021, 22:31
जादू की तरह काम करता है। आगे बढ़ने और मेरे लिए इसका परीक्षण करने के लिए धन्यवाद!
 – 
David Meyenberg
27 अक्टूबर 2021, 23:42