Unity Key Concepts के लिए Maps SDK टूल

यहां दिए गए सेक्शन में उन कॉन्सेप्ट की जानकारी दी गई है जो Unity के लिए Maps SDK को समझने और इस्तेमाल करने में अहम भूमिका निभाते हैं.

MapsService की क्लास और कॉम्पोनेंट

MapsService क्लास, Unity के लिए Maps SDK टूल के साथ इंटरैक्ट करने के लिए एंट्री पॉइंट के तौर पर काम करती है. यह ApiKey को इकट्ठा करता है. साथ ही, यह GameObjectManager और LoadMap फ़ंक्शन के साथ-साथ, GameObject क्रिएशन पाइपलाइन से इवेंट दिखाता है.

अपने Unity प्रोजेक्ट में Unity के लिए Maps SDK टूल का इस्तेमाल करने के लिए, अपने सीन में Maps Service स्क्रिप्ट कॉम्पोनेंट को खाली GameObject में जोड़ें. Maps सेवा, जनरेट की गई मैप की सुविधा GameObjects को अपने-आप इस ऐंकर GameObject के चाइल्ड (बच्चों के लिए) के तौर पर जोड़ देती है. आपके बेस GameObject से जुड़ी मैप सेवा (स्क्रिप्ट) की मदद से, Unity इंस्पेक्टर में इसके सार्वजनिक एट्रिब्यूट ऐक्सेस किए जा सकते हैं—जैसा कि यहां दिखाया गया है.

Maps सेवा (स्क्रिप्ट)

Unity GameObjects के तौर पर भौगोलिक सुविधाएं

Unity के लिए Maps SDK टूल, Google Maps के डेटाबेस की भौगोलिक सुविधाओं (जैसे, इमारत, सड़क, और पानी) को गेम में Unity GameObjects के तौर पर रेंडर करता है. रनटाइम के समय, इन्हें GameObject के चाइल्ड के रूप में बनाया जाता है, जिससे MapsService कॉम्पोनेंट जुड़ा होता है. साथ ही, इनमें {MapFeatureType} ({PlaceID}) फ़ॉर्म के नाम होते हैं.

SDK टूल के गेम ऑब्जेक्ट

GameObject बनाना

गेमप्ले के दौरान, SDK टूल Google Maps के डेटाबेस से भौगोलिक डेटा को नीचे ले जाता है. इसे सिमैंटिक टाइल एपीआई की मदद से, सिमैंटिक वेक्टर टाइल के तौर पर लिया जाता है. यह इस डेटा को तुरंत डिकोड करके, Unity GameObjects में बदल देता है. इस तरीके से, आपको जल्द से जल्द मैप की सुविधा का डेटा (मेटाडेटा और ज्यामिति डेटा, दोनों) ऐक्सेस करने की सुविधा मिलती है, ताकि आप पाइपलाइन के आखिर तक पहुंचने से पहले GameObjects को कस्टमाइज़ कर सकें.

Unity के लिए Maps SDK टूल, वेक्टर डेटा मिलने पर सबसे पहले इससे MapFeature ऑब्जेक्ट बनाता है.

पाइपलाइन में बीच के लेवल पर, MapFeature ऑब्जेक्ट खास होते हैं. इसका मतलब है कि वे खास तरह के बन जाते हैं (उदाहरण के लिए, Google.Maps.Feature.ModeledStructure). इन खास MapFeature ऑब्जेक्ट में MapFeatureShape ज्यामिति की जानकारी (ModeledStructure के मामले में ModeledVolume) शामिल होती है. इन जानकारी में, मैप सुविधा का खास डेटा (जैसे कि शीर्ष और त्रिभुज) और कॉमन बॉक्स (जैसे बाउंडिंग) को ऐक्सेस करने के लिए शेयर किए गए इंटरफ़ेस शामिल हैं.

ज्यामिति के डेटा को Unity मेश में बदल दिया जाता है और MeshFilter की मदद से, बनाए गए GameObject में जोड़ा जाता है. इसके बाद, उसे MeshRenderer के साथ दिखाया जाता है.

पाइपलाइन तक पहुंचना

MapFeature आपको ऐसे इवेंट के ज़रिए दिखते हैं जो पाइपलाइन के अलग-अलग चरणों के दौरान ट्रिगर होते हैं. इनमें WillCreate इवेंट शामिल होते हैं. ये इवेंट, GameObject बनने से ठीक पहले ट्रिगर होते हैं और आपको स्टाइल के विकल्प तय करने या बनाने की प्रोसेस रद्द करने की अनुमति देते हैं. साथ ही, DidCreate इवेंट—GameObject बनाने के तुरंत बाद फ़ायर किए जाते हैं, ताकि आप खत्म होने वाले मेश में कुछ जोड़ सकें या बदलाव कर सकें.

उदाहरण के तौर पर, आग लगने के बाद ExtrudedStructures की जांच WillCreateExtrudedStructureEvent की जा सकती है और 20 मीटर से छोटी सभी इमारतों को छिपाया जा सकता है या फिर, उन्हें बनाना ही छोड़ा जा सकता है.

इवेंट के टाइप

Google.Maps.Event नेमस्पेस में, हर तरह की भौगोलिक सुविधाओं के लिए एक इवेंट क्लास होती है.

इनमें से हर तरह के इवेंट में WillCreate और DidCreate सार्वजनिक सदस्य वाला इवेंट ऑब्जेक्ट होता है, जिसकी सदस्यता ली जा सकती है. कोड के इस उदाहरण में बताया गया है.

dynamicMapsService.MapsService.Events.ExtrudedStructureEvents.DidCreate.AddListener(args => {

    // Apply nine-sliced walls and roof materials to this building.
    buildingTexturer.AssignNineSlicedMaterials(args.GameObject);

    // Add a border around the building base using the Building Border Builder class,
    // coloring it using the given border Material.
    Extruder.AddBuildingBorder(args.GameObject, args.MapFeature.Shape, BuildingAndRoadBorder);
});

WillCreate इवेंट

MapFeature बनाए जाने के तुरंत बाद WillCreate इवेंट ट्रिगर होते हैं, लेकिन उससे फ़ाइनल GameObject के जनरेट होने से पहले. WillCreate इवेंट की मदद से, MapFeature से बनाए गए GameObjects को बंद किया जा सकता है या कस्टमाइज़ किया जा सकता है. WillCreate इवेंट आर्ग्युमेंट इस तरह से होते हैं:

using System.ComponentModel;
using Google.Maps.Decoded;
using UnityEngine;

namespace Google.Maps {
  public class WillCreateGameObjectEventArgs<T, U>
      : CancelEventArgs where T : IMapObject, U : IGameObjectStyle {

    public readonly T MapObject;
    public U Style;
    public GameObject Prefab;

    Public WillCreateGameObjectEventArgs(T mapObject, U defaultStyle, GameObject prefab) {
      MapObject = mapObject;
      Style = defaultStyle;
      Prefab = prefab;
    }
  }
}
  • Cancel (CancelEventArgs से इनहेरिट की गई) को true पर सेट करने से, GameObject को बनाया नहीं जा सकता.
  • MapObject को सिर्फ़ पढ़ा जा सकता है.
  • Style को सेट करके, बनाए गए GameObject को पसंद के मुताबिक बनाया जा सकता है.
  • Prefab को सेट करने से, जनरेट किए गए GameObject को प्रीफ़ैब से बदल दिया जाता है.

DidCreate इवेंट

DidCreate इवेंट, GameObject के जनरेट होने के बाद, उसे सीन में जोड़े जाने के बाद ट्रिगर होता है. वे आपको GameObject बनाए जाने के सफल होने पर सूचित करते हैं, जिससे आपको आगे की प्रोसेसिंग करने की अनुमति मिलती है. DidCreate इवेंट तर्कों में यह फ़ॉर्म शामिल है:

using System.ComponentModel;
using Google.Maps.Decoded;
using UnityEngine;

namespace Google.Maps {
  public class DidCreateGameObjectEventArgs<T, U>
      : EventArgs where T : IMapObject, U : IGameObjectStyle {

    public readonly T MapObject;
    public GameObject CreatedObject;

    Public DidCreateGameObjectEventArgs(T mapObject, GameObject createdObject) {
      MapObject = mapObject;
      CreatedObject = createdObject;
    }
  }
}
  • MapObject को सिर्फ़ पढ़ा जा सकता है. इसलिए, इसमें बदलाव करने से सीन में कोई बदलाव नहीं होगा.
  • CreatedObject को बदलने से, सीन में जोड़ा गया GameObject हो जाएगा.

इमारतें

इमारतें दो तरह की होती हैं: निकाली गई इमारतें और मॉडल की गई संरचना.

निकाली गई इमारतें

बाहर निकाली गई इमारतें एक आउटलाइन (यानी, 2D फ़ुटप्रिंट) और एक ऊंचाई से जनरेट होती हैं. SDK टूल, ज़्यादातर बिल्डिंग को इस तरह दिखाता है और यह इन तीन तरीकों से उन्हें जनरेट करता है:

  • असल ऊंचाई के डेटा का इस्तेमाल करके (जहां यह जानकारी उपलब्ध है). यह डिफ़ॉल्ट व्यवहार है.

  • सभी इमारतों की असल ऊंचाई को अनदेखा करते हुए, उनके लिए एक तय ऊंचाई उपलब्ध कराई जाती है.

  • उन सभी इमारतों के लिए बैकअप ऊंचाई देकर, जिनकी ऊंचाई असल दुनिया के लिए नहीं है (डिफ़ॉल्ट रूप से, यह वैल्यू 10 मीटर पर सेट होती है).

इन तीन तरीकों को एक साथ मिलाने पर, Unity के लिए Maps SDK टूल को ऐसे शहर बनाने में मदद मिलती है जिनमें असली दुनिया को दिखाया जाता है. साथ ही, इमारतों की ऐसी ऊंचाई या दोनों का मिला-जुला रूप इस्तेमाल किया जा सकता है.

मॉडल किए गए स्ट्रक्चर

मॉडल किए गए स्ट्रक्चर, टेसेलेड ट्रायएंगल के स्टैंडर्ड 3D मॉडलिंग अप्रोच का इस्तेमाल करके जनरेट किए जाते हैं. आम तौर पर, इस तरीके का इस्तेमाल लैंडमार्क इमारतों के लिए किया जाता है, जैसे कि स्टैच्यू ऑफ़ लिबर्टी.

मॉडलेड स्टैचू ऑफ़ लिबर्टी

सामग्री को लागू किया जा रहा है

Unity में, रेंडरिंग की प्रोसेस में GameObjects में हकीकत जोड़ने के लिए, शेडर, सामग्री, और टेक्स्चर का इस्तेमाल होता है. शेडर यह तय करते हैं कि दिखाई गई ज्यामिति पर टेक्सचर, रंग, और रोशनी को कैसे लागू किया जाता है. साथ ही, मटीरियल के तौर पर सेव की गई खास टेक्सचर, रंग, और अन्य सेटिंग का इस्तेमाल कैसे किया जाता है. किसी सतह को रेंडर करने का तरीका बताने के लिए, मटीरियल का इस्तेमाल किया जाता है. इसमें इस्तेमाल की जाने वाली बनावटों, टाइल की जानकारी, और रंग के बारे में जानकारी भी शामिल है.

शेडर छोटे स्क्रिप्ट होते हैं जिनमें लाइटिंग इनपुट और सामग्री के कॉन्फ़िगरेशन के आधार पर—हर पिक्सल के रंग का हिसाब लगाने का लॉजिक होता है. Unity के लिए Maps SDK टूल, मॉडल किए गए स्ट्रक्चर के लिए स्टैंडर्ड शेडर और बुनियादी मैप की सुविधाओं के लिए एक स्टैंडर्ड शेडर के साथ आता है. हालांकि, यह बेहतर मटीरियल ऐप्लिकेशन पर भी काम करता है. UV मैपिंग के लिए निर्देशांक, मैप की सुविधा के लिए गेम ऑब्जेक्ट्स की गिनती की जाती है. इसे इस तरह से कैलकुलेट किया जाता है कि किसी भी बुनियादी कॉन्टेंट को लागू किया जा सके. साथ ही, यह बिना बदलाव के सही लगेगा.

मटीरियल से जुड़े ज़्यादा बेहतर इफ़ेक्ट के लिए, Unity के लिए Maps SDK टूल, अतिरिक्त यूवी चैनलों के ज़रिए हर वर्टेक्स पर अतिरिक्त डेटा देता है. साथ ही, GoogleMapsShaderLib लाइब्रेरी की मदद से cg शेडर के लिए कई सुविधाजनक फ़ंक्शन भी उपलब्ध कराता है. इससे, इमारत बनाने में नाइन-स्लाइस जैसी चीज़ें बनाने में मदद मिलती है. जैसे, छत, ज़मीन, दीवार के कॉर्नर, और टाइल वाली दीवारों का टेक्सचर.

ज़्यादा जानकारी के लिए, Unity यूज़र मैन्युअल में मटीरियल बनाना और उसका इस्तेमाल करना देखें.

यूवी चैनल

हर MapFeature टाइप के यूवी चैनलों में, इस तरह का डेटा होता है:

ExtrudedStructure

Walls

ExtrudedStructure की हर दीवार को नीचे दिए गए फ़ॉर्म के क्वाड के तौर पर बनाया गया है:

Walls

दीवारों के लिए यूवी निर्देशांक की गिनती, हर क्वाड के हिसाब से की जाती है. क्वाड के बीच वर्टिकल शेयर नहीं किए जाते. इससे दीवारों के बीच कठोर नॉर्मल होने में मदद मिलती है. इसका मतलब है कि दीवारों के कोनों को मुलायम गोल किनारों के बजाय ठोस कोणों के तौर पर दिखाया जाए.

चैनल 0: (x, y, चौड़ाई, ऊंचाई)
x और y, दीवार के इस क्वाड (स्क्वेयर सेक्शन) के सबसे नीचे बाएं कोने से जुड़े निर्देशांक हैं. वहीं, चौड़ाई और height, वॉल की इस क्वॉड की चौड़ाई और ऊंचाई हैं. यह दीवार बनाने वाले हर क्वाड पर लागू होता है.
छत

छत की बनावट को ऐक्सिस से अलाइन किया जा सकता है या ExtrudedStructure की दिशा में अलाइन किया जा सकता है. आपने इसे ExtrudedStructureStyle ऑब्जेक्ट की मदद से सेट किया है.

चैनल 0: (x, y, चौड़ाई, ऊंचाई)
x और y, हर छत के सबसे ऊपरी बाएं कोने के निर्देशांक हैं. खास तौर पर, ये छत के सबसे निचले बाएं कोने में मौजूद बाउंडिंग बॉक्स के कोना होते हैं. width और height से, छत के बाउंडिंग बॉक्स का साइज़ तय होता है.

Region

चैनल 0: (x, y, चौड़ाई, ऊंचाई)
x और y, हर शीर्ष के निर्देशांक हैं. ये निर्देशांक, क्षेत्र के लिए ऐक्सिस से अलाइन होने वाले बाउंडिंग बॉक्स के सबसे नीचे बाएं कोने के हिसाब से होते हैं. चौड़ाई और height, बाउंडिंग बॉक्स का साइज़ बताते हैं.

Segment

चैनल 0: (x, y, चौड़ाई, लंबाई)
x और y हर शीर्ष के निर्देशांक हैं, जिनकी गणना इस तरह की जाती है कि सेगमेंट पूरी तरह से सीधे थे—ताकि टेक्सचर को कोनों के चारों ओर मुड़ने दिया जा सके. चौड़ाई और length सेगमेंट के डाइमेंशन तय करते हैं.

ModeledStructure

चैनल 0:
हर निर्देशांक (0, 0, 0, 0) पर सेट है, क्योंकि फ़िलहाल कोई टेक्सचर-कोऑर्डिनेट लागू नहीं किया गया है.

GoogleMapsShaderLib

Unity के लिए Maps SDK टूल में GoogleMapsShaderLib नाम की एक शेडर लाइब्रेरी होती है. इससे आपको ऐसे शेडर बनाने में मदद मिलती है जो MapFeature GameObjects के साथ अच्छी तरह से काम करते हैं. लाइब्रेरी को GoogleMapsShaderLib.cginc फ़ाइल में लागू किया जाता है. लाइब्रेरी का इस्तेमाल करने के लिए, शेडर स्क्रिप्ट के CGPROGRAM फ़्लैग सेक्शन में इस #include डायरेक्टिव को शामिल करें.

CGPROGRAM
// ...
#include "/Assets/GoogleMaps/Materials/GoogleMapsShaderLib.cginc"
// ...
ENDCG

शेडर लाइब्रेरी को GoogleMaps.unitypackage के अंदर बंडल किया जाता है. पैकेज इंपोर्ट करने के बाद, प्रोजेक्ट फ़ोल्डर /Assets/GoogleMaps/Materials/ में GoogleMapsShaderLib.cginc देखा जा सकता है.

नौ-स्लाइसिंग

GoogleMapsShaderLib में एक सुविधा फ़ंक्शन होता है जिसका इस्तेमाल फ़्रैगमेंट शेडर में किया जा सकता है. इससे आपको टेक्सचर को नौ-स्लाइस करने में मदद मिलेगी. नाइन स्लाइसिंग एक ऐसी तकनीक है जो किसी टेक्स्चर वाली सतह को कवर करती है. इसमें कई बाउंड्री का इस्तेमाल करके, टेक्सचर को नौ हिस्सों में बांटा जाता है. सीमाओं के बीच के इलाकों को टाइल किया जाता है और सीमा के बाहर के इलाकों को पहले जैसा ही रखा जाता है. इसका उदाहरण यहां दिया गया है:

नौ-स्लाइसिंग

जैसे, किसी इमारत की दीवार पर नौ-स्लाइस की गई टेक्सचर को लागू करते समय, उस इमारत के ऊपरी हिस्से को दीवार के सबसे ऊपरी हिस्से पर (छत के नीचे) लगाया जाता है. नीचे वाले हिस्से को दीवार के निचले हिस्से (ज़मीन से जोड़ा गया) पर लागू किया जाता है.

सड़कों पर (एक अन्य उदाहरण के लिए), नाइन-स्लाइसिंग से आपको तय चौड़ाई वाला फ़ुटपाथ मिलता है. हालांकि, सड़क की चौड़ाई के आधार पर, लेन की संख्या अलग-अलग हो सकती है.

आप अपने शेडर में GoogleMapsShaderLib.cginc को शामिल करके और फिर nineSlice फ़ंक्शन को कॉल करके नौ-स्लाइसिंग का इस्तेमाल कर सकते हैं. सैंपल शेडर और सामग्री को GoogleMaps.unitypackage में शामिल किया गया है, ताकि यह दिखाया जा सके कि कैसे, nineSlice फ़ंक्शन का इस्तेमाल करके, वैरिएबल साइज़ का एक असली स्काईस्क्रेपर तैयार किया जा सकता है. ऐसा करने के लिए, ये स्ट्रेचिंग या टेढ़े बिना ही काम करती हैं.

उदाहरण सामग्री की जगह
/Assets/GoogleMaps/Examples/04_Advanced/MoreStyling/Materials/NineSlicing
शेडर लोकेशन का उदाहरण
/Assets/GoogleMaps/Examples/04_Advanced/MoreStyling/Materials/NineSlicing/BuildingWall.shader

आपके पास ModeledStructures को छोड़कर, किसी भी MapFeature पर नौ-स्लाइसिंग का इस्तेमाल करने का विकल्प है, जिसमें फ़िलहाल कोई टेक्सचरिंग कोऑर्डिनेट नहीं है.

कोऑर्डिनेट सिस्टम

Unity निर्देशांक सिस्टम के लिए, Maps SDK टूल, वेब मर्केटर प्रोजेक्शन का इस्तेमाल करता है, ताकि इसे गोलाकार WGS 84 अक्षांश-देशांतर और कार्टेशियन Unity Worldspace (Vector3) के बीच बदलने के लिए इस्तेमाल किया जा सके.

वेक्टर3 मान किसी फ़्लोटिंग ऑरिजिन के सापेक्ष होते हैं, जो आम तौर पर उपयोगकर्ता की शुरुआती जगह पर सेट होता है. इस वजह से, आपको वेक्टर3 वैल्यू को सेशन के बाहर (यानी आपके सर्वर या उपयोगकर्ता के डिवाइस पर) नहीं बनाए रखना चाहिए. हमारा सुझाव है कि आप अक्षांश-देशांतर जोड़े का इस्तेमाल करके, भौतिक दुनिया की जगहें बताएं.

फ़्लोटिंग ऑरिजिन का इस्तेमाल, फ़्लोटिंग-पॉइंट की स्थिरता से जुड़ी समस्याओं से बचने के लिए किया जाता है. Unity की वेक्टर3 क्लास, सिंगल-प्रीसिज़न फ़्लोटिंग-पॉइंट नंबर का इस्तेमाल करती है. साथ ही, दिखाई जा सकने वाली फ़्लोटिंग-पॉइंट नंबर की डेंसिटी कम होने लगती है. इसका मतलब है कि बड़ी फ़्लोटिंग-पॉइंट नंबर की डेंसिटी कम हो जाती है. जब भी उपयोगकर्ता ऐसे ऑरिजिन से काफ़ी दूर जाएं जहां यह समस्या हो, तो फ़्लोटिंग ऑरिजिन को अपडेट किया जा सकता है. चीज़ों को कितनी बार अपडेट करना है, इस हिसाब से इसे कम वैल्यू (जैसे कि 100 या 200 मीटर) या उससे ज़्यादा (एक कि॰मी॰ से ज़्यादा) पर सेट किया जा सकता है.

Unity Worldspace को 1:1 (मीटर) पर सेट किया जाता है. ऐसा, शुरुआती ऑरिजिन के अक्षांश के आधार पर किया जाता है. मर्केटर प्रोजेक्शन में, अक्षांश के हिसाब से स्केल में थोड़ा-बहुत फ़र्क़ होता है. इसलिए, जैसे-जैसे उपयोगकर्ता उत्तर और दक्षिण की ओर बढ़ते हैं, Unity वर्डस्पेस स्केल का 1:1 के बजाय थोड़ा-बहुत बदलाव होता है.

Unity के लिए Maps SDK टूल में, Google.Maps.LatLng और Unity Worldspace (वेक्टर3) के बीच कन्वर्ज़न के लिए कन्वर्ज़न फ़ंक्शन होते हैं, जो फ़्लोटिंग ऑरिजिन और स्केल को ध्यान में रखते हैं.

गड़बड़ियां लोड करें

नेटवर्क से मैप डेटा लोड करते समय होने वाली गड़बड़ियों को MapLoadErrorEvent इवेंट से मैनेज किया जा सकता है. अगर किसी इवेंट हैंडलर को नहीं जोड़ा जाता है, तो Unity के लिए Maps SDK टूल, ज़्यादातर तरह की गड़बड़ियों को खुद ही हैंडल कर लेता है. हालांकि, एक गड़बड़ी है जिसकी वजह से आपके ऐप्लिकेशन को कोई कार्रवाई करनी होगी. इस बारे में MapLoadErrorArgs.DetailedErrorCode ने बताया है और इसके बारे में नीचे बताया गया है.

UnsupportedClientVersion

Unity के लिए Maps SDK टूल का यह वर्शन अब काम नहीं करता. ऐसा हो सकता है कि यह मौजूदा एपीआई पासकोड के साथ काम करता हो. आम तौर पर, ऐप्लिकेशन इस्तेमाल करने वाले से नए वर्शन पर अपडेट करने का अनुरोध किया जाना चाहिए.

आम तौर पर इस गड़बड़ी का मतलब है कि Unity वर्शन के लिए Maps SDK टूल का वर्शन बहुत पुराना है. बहुत कम मामलों में, हम इसका इस्तेमाल तब कर सकते हैं, जब हमें Unity के लिए Maps SDK के वर्शन या किसी API (एपीआई) कुंजी के वर्शन में कोई गंभीर समस्या मिलती है. हम आपको इस बारे में बताने की पूरी कोशिश करेंगे. हम यह पक्का करेंगे कि ऐसा तब तक न हो, जब तक ऐप्लिकेशन का कोई ऐसा वर्शन उपलब्ध न हो जो अपडेट करने के लिए उपलब्ध हो.

यह पक्का करना सबसे सही तरीका है कि इस गड़बड़ी के होने पर आपके ऐप्लिकेशन का अपग्रेड पाथ सही हो. इससे आपके उपयोगकर्ता, ऐप्लिकेशन के ऐसे नए वर्शन पर माइग्रेट कर सकते हैं जिसमें SDK टूल काम करता हो. ज़्यादा जानकारी के लिए, क्लाइंट किल स्विच दस्तावेज़ देखें.

आम तौर पर होने वाली समस्याएं

बुनियादी मैप की सुविधाओं को z-टेस्टिंग के बिना, सामने से रेंडर किया जाता है, क्योंकि इस तरह की सभी सुविधाएं एक ही प्लेन में रेंडर की जाती हैं. आधार मैप की सुविधाओं पर लागू की जाने वाली बदले गए मटीरियल पर, आपको लागू की जाने वाली किसी भी बदली गई सामग्री पर z-टेस्टिंग को ZTest हमेशा पर सेट करना होगा, ताकि यह पक्का किया जा सके कि वे सही तरीके से रेंडर हुई हैं.

Google ने GoogleMaps.unitypackage में इन समस्याओं को हल करने के लिए, एक सैंपल शेडर शामिल किया है. इसका नाम "BaseMapTextured.shader है और यह /Assets/GoogleMaps/Materials/ फ़ोल्डर में मौजूद है. किसी कॉन्टेंट पर इसका इस्तेमाल करने के लिए, मटीरियल इंस्पेक्टर में शेडर ड्रॉप-डाउन से Google > Maps > शेडर > BaseMap Textured चुनें.

किसी Feature.Region या Feature.AreaWater ऑब्जेक्ट को स्टाइल करते समय, मटीरियल, पसंद के मुताबिक रंग या स्टाइलिंग ऑब्जेक्ट में FillModeType एनम की मदद से अपने-आप जनरेट हुए रंग का इस्तेमाल करके, फ़िल का इस्तेमाल किया जा सकता है. Auto रंग, क्षेत्र के इस्तेमाल के टाइप की वैल्यू के आधार पर जनरेट होते हैं.