Maps SDK for Unity dikirimkan dengan kumpulan contoh scene Unity, dan
masing-masing menunjukkan fitur dasar SDK. SDK ini diinstal saat
Anda menginstal SDK, ke dalam direktori /GoogleMaps/Examples/
.
Untuk menjalankan contoh scene di Unity
Integrasikan Maps SDK for Unity dengan mengikuti prosedur Memulai. Setelah selesai, Anda akan mendownload SDK dan mengintegrasikannya ke dalam Unity.
Di panel Project, buka folder
/Assets/GoogleMaps/Examples/
. Contoh scene diatur dalam struktur folder berikut:Folder Adegan utama Deskripsi 01_Memulai HelloWorld Mengilustrasikan cara paling sederhana untuk memuat peta. 02_Dasar-Dasar MapsService101 Memerinci cara menggunakan Layanan Maps untuk berkomunikasi dengan SDK. 03_Gaya Visual Peta StylingMaps101 Memberikan contoh komprehensif tentang penataan gaya fitur peta pada runtime. 04_Lanjutan Beberapa adegan Kelompokkan kembali beberapa contoh yang menggambarkan topik lanjutan seperti pratinjau waktu pengeditan (gaya visual), zoom campuran, lokasi yang dapat diputar, pencarian jalur, dan gaya visual lanjutan. Klik dua kali contoh scene yang ingin Anda jalankan. Scene akan muncul di panel Hierarchy.
Sebelum dapat menjalankan scene, Anda harus menambahkan apiKey agar SDK berhasil berkomunikasi dengan server Google. apiKey adalah parameter komponen MapsService Unity, yang biasanya disertakan ke contoh objek game atau salah satu turunannya.
Klik tombol Run.
Memulai
Contoh scene ini menunjukkan aspek Maps SDK for Unity yang paling dasar. Secara default, kode ini memuat koordinat untuk Patung Liberty, lalu menampilkan Statue of Liberty GameObject dan geometri sekelilingnya, di panel Scene dan Editor.
Jika menghentikan scene, Anda dapat memasukkan kumpulan koordinat baru ke kolom Lintang dan Bujur (di dalam komponen Contoh Dasar (Skrip) di Inspector), lalu menjalankan kembali suasana—dan suasana dunia yang berbeda akan ditampilkan.
Kode yang memungkinkan komunikasi dengan Maps SDK for Unity
terletak di fungsi Start()
skrip:
private void Start () {
// Get required Maps Service component on this GameObject.
MapsService mapsService = GetComponent<MapsService>();
// Set real-world location to load.
mapsService.InitFloatingOrigin(LatLng);
// Register a listener to be notified when the map is loaded.
mapsService.Events.MapEvents.Loaded.AddListener(OnLoaded);
// Load map with default options.
mapsService.LoadMap(ExampleDefaults.DefaultBounds,ExampleDefaults.DefaultGameObjectOptions);
}
Dalam contoh ini, peta dimuat dengan petunjuk gaya dan batas default. Komponen MapsService adalah gateway untuk berkomunikasi dengan Maps SDK for Unity. Perhatikan bahwa pasangan garis lintang dan garis bujur dalam contoh ini menginisialisasi asal mengambang peta. Parameter batas menentukan area yang dimuat di sekitar asal tersebut.
101 MapsService
Contoh scene ini menunjukkan cara menggunakan komponen MapsService untuk berinteraksi dengan Maps SDK for Unity dalam berbagai cara.
Scene menjalankan beberapa komponen khusus yang dapat Anda gunakan dalam scene Unity Anda sendiri. Komponen ini ditetapkan ke gameobject MapsExample dalam hierarki scene. Mereka menampilkan siklus proses pemuatan peta. Contoh ini menggunakan perspektif orang pertama.
Komponen | Deskripsi |
---|---|
BaseMapLoader | Memuat peta dengan Lng Lng yang diberikan sebagai tempat asal, dan dalam radius MaxDistance. Komponen BaseMapLoader menunjukkan cara menangani error pemuatan yang dialami oleh SDK. |
DynamicMapsUpdater | Secara dinamis memuat atau menghapus muatan bagian peta saat pengguna (dalam hal ini kamera utama) bergerak di seluruh dunia. Komponen DynamicMapsUpdater membuat area pandang Camera.main selalu dimuat setiap saat, menghapus muatan semua yang ada di luar area pandang. |
FloatingLatLngOriginUpdater | Memindahkan asal mengambang dan memperbarui posisi relatif dari semua fitur peta yang dimuat saat pengguna (dalam hal ini kamera utama) mencapai jarak FloatingOriginRange dari posisi awal. Komponen FloatingLatLngOriginUpdater menunjukkan cara menggunakan metode MapsService.MoveFloatingOrigin untuk memusatkan kembali gameworld. Hal ini penting karena error pembulatan floating point, yang menyebabkan fitur peta semakin salah menempatkan gameplay selanjutnya dari asal game. Untuk mengetahui informasi selengkapnya, lihat Asal Mengambang. |
RoadNamesUpdater | Saat komponen RoadNamesUpdater aktif, peta yang dimuat akan menampilkan nama jalan sebagai label.![]() |
BuildingNamesUpdater | Jika komponen BuildingNamesUpdater aktif, peta yang dimuat akan menampilkan nama bangunan sebagai label.![]() |
ProgressBarUpdater | Saat komponen ProgressBarUpdater aktif, HUD akan menampilkan progres pemuatan saat ini. |
SearchByPlaceIdUpdater | Jika aktif, komponen SearchByPlaceIdUpdater akan melacak placeId yang dimuat dan memberikan cara untuk menelusuri gameobject yang diidentifikasi oleh placeId yang dipilih pada peta yang dimuat. |
MapFeaturesController | Saat komponen MapFeaturesController aktif, komponen ini akan menyediakan cara untuk mengirim geometri peta yang dimuat ke dalam beberapa bucket yang telah ditetapkan (pengasuhan gameobject berbeda). Bagian ini juga menyediakan cara untuk menginstruksikan MapsService tentang kategori MapFeatures yang harus dimuat. |
Secara default, contoh ini memuat koordinat untuk Midtown Manhattan, New York, AS. Jika menghentikan tampilan, Anda dapat memasukkan kumpulan koordinat baru ke kolom Lintang dan Bujur pada komponen Dynamic Maps Service Script di Inspector. Jalankan kembali adegan dan tampilan adegan dunia yang berbeda.
Dasar-Dasar Gaya Visual Maps
Contoh scene ini menunjukkan cara menggunakan Maps SDK for Unity untuk menata gaya fitur peta saat dibuat selama proses pemuatan.
Ada tiga pendekatan untuk menata gaya peta saat runtime:
- Menyediakan konfigurasi gaya (GameObjectOptions) ke komponen MapsService saat memuat peta.
- Gunakan peristiwa WillCreate untuk melampirkan petunjuk gaya kustom untuk WillCreate peta tertentu sebelum dibuat instance-nya oleh SDK.
- Menata gaya GameObjects pada saat run-time setelah dibuat, baik dalam peristiwa DidCreate maupun setelah peristiwa MapLoaded diterima.
Contoh 101 Gaya Visual Maps mengilustrasikan dua pendekatan pertama.
Pemrosesan kode setiap kumpulan parameter tersedia di class berikut, yang terletak di /Assets/GoogleMaps/Examples/03_MapsStyling/Scripts
:
AreaWaterConfigView |
ExtrudedStructureConfigView |
ModeledStructureConfigView |
RegionConfigView |
SegmentConfigView |
Kode yang mengumpulkan semua gaya fitur peta dan meneruskannya ke MapsService API terletak di class MapsStyleEditorView.
Dasar-Dasar Analisis Jalur Maps
Contoh scene ini menunjukkan cara menggunakan fungsi pencarian jalur bawaan di SDK. Layanan ini mengandalkan algoritma A* dan kisi jalan pada peta yang dimuat sebagai grafik yang dapat dilintasi.
Contoh ini menampilkan dua karakter di layar. Yang pertama dijalankan oleh pemain, dan yang kedua dikelola oleh kecerdasan buatan.
Saat diaktifkan, bot iblis (berwarna merah) mencoba mengejar avatar kita (berwarna hijau). Semua jalur akan diperbarui secara real time.
Contoh ini menyoroti grafik node (atau titik jalan) kisi jalan yang tersedia di peta yang dimuat.
Perhatikan bahwa node ini tidak memiliki representasi visual. Bola putih yang ditampilkan di peta hanya untuk tujuan ilustrasi.
Contoh ini sengaja menyembunyikan semua fitur peta kecuali segmen jalan.
Kode yang menangani karakter utama terletak di komponen RoadLatticeCharacterController, sedangkan kode yang menangani perilaku penelusuran Agen AI dapat ditemukan di RoadLatticeAIController.
Topik Lanjutan
Contoh berikut menunjukkan fitur lanjutan pembuatan scene Unity.
Edit pratinjau waktu
Scene contoh pratinjau waktu edit di bagian /Assets/GoogleMaps/Examples/04_Advanced/EditTimePreview
memberikan gambaran sekilas pada implementasi baru yang memungkinkan penataan gaya objek game peta di editor pada waktu edit, dibandingkan dengan gaya visual runtime yang dijelaskan di bagian Dasar-Dasar Penataan Gaya Maps.
Zoom campuran
Contoh scene zoom campuran di bagian /Assets/GoogleMaps/Examples/04_Advanced/MixedZoom
mengilustrasikan cara menggunakan tingkat zoom yang berbeda saat memuat peta,
berdasarkan lokasi kamera utama dan jarak ke peta.
Fitur ini memberikan cara untuk menangani berbagai tingkat detail.
Siang dan malam
Contoh adegan siang dan malam pada
/Assets/GoogleMaps/Examples/04_Advanced/Miscellaneous
menunjukkan
cara membuat siklus siang-malam menggunakan sistem skybox,
pencahayaan terarah, dan bahan emisif Unity.
Contoh ini hampir identik dengan contoh sembilan irisan. Satu-satunya perbedaan adalah contoh ini menambahkan SunAndMoonController dan EmissionController untuk mengontrol warna emisi dan pencahayaan material untuk menyimulasikan siklus siang-malam. Logika dasar penerapan material ke bangunan adalah sama dengan contoh pembuatan 9-slicing.
Contoh ini juga menggunakan komponen DynamicMapsService, komponen BuildingStructurer, dan komponen ErrorHandling.
Peta mini
Adegan contoh peta mini di bagian
/Assets/GoogleMaps/Examples/04_Advanced/Miscellaneous
menunjukkan cara menyiapkan setelan render Kamera untuk
menampilkan tampilan peta mini dari dunia game dalam elemen UI. Scene ini menggunakan
gameObject.layer
dan
Camera.cullingMask
untuk mengontrol apa yang ditampilkan dalam minimap. Scene ini juga menggunakan
RenderTexture
untuk terhubung ke komponen UI
UI.RawImage
untuk ditampilkan sebagai minimap di layar.
Pengikut lokasi
Adegan contoh pengikut lokasi di bagian
/Assets/GoogleMaps/Examples/04_Advanced/Miscellaneous
menunjukkan cara
menggunakan koordinat GPS dunia nyata pemain untuk memperbarui posisi dunia game mereka.
Contoh Gaya Visual Lainnya
Contoh gaya visual spesifik berikut berada di
/Assets/GoogleMaps/Examples/04_Advanced/MoreStyling
.
Sembilan irisan
Contoh scene dengan sembilan irisan menunjukkan cara memberi tekstur pada bangunan
menggunakan bahan sembilan irisan. Materi ini bergantung pada shader kustom
BuildingWall Wall (9 Slice) yang terletak di
/Assets/GoogleMaps/Examples/04_Advanced/MoreStyling/Materials/NineSlicing
.
Komponen tersebut menggunakan komponen BuildingTexturer untuk menerapkan sembilan irisan material, dan menggunakan komponen BuildingTexturer untuk memungkinkan navigasi ke seluruh dunia, dengan komponen MapsService
yang hanya memuat bagian dunia yang dilihat setiap saat.
Contoh ini juga menggunakan komponen ErrorHandling untuk menampilkan error yang dialami komponen MapsService saat memuat geometri dunia.
Batas bangunan
Adegan contoh batas bangunan menunjukkan cara menambahkan batas di sekitar dasar bangunan.
Contoh ini hampir identik dengan contoh sembilan irisan.
Satu-satunya perbedaan adalah contoh ini menggunakan class Extruder
untuk menambahkan batas sesuai model ke dasar bangunan.
Contoh ini juga menggunakan komponen DynamicMapsService, komponen BuildingStructurer, dan komponen ErrorHandling.
Parapet
Adegan contoh pembatas menunjukkan cara menambahkan parapet ke tepi atas bangunan.
Contoh ini hampir identik dengan contoh sembilan irisan.
Satu-satunya perbedaan adalah contoh ini menggunakan Extruder
untuk menambahkan
parapet sesuai model di sekitar atap bangunan. Aplikasi ini juga menggunakan komponen DynamicMapsService, komponen BuildingStructurer, dan komponen ErrorHandling.
Secara default, contoh ini memuat koordinat untuk Melbourne, Australia.
Penghancuran bangunan
Adegan contoh penggabungan bangunan menunjukkan cara merampingkan bangunan (yaitu, mengurangi tinggi bangunan yang diekstrusi ke nol) saat berada dekat dengan pemain. Contoh ini menggunakan komponen ErrorHandling untuk menampilkan error yang ditemukan oleh komponen MapsService saat memuat geometri.
Penggantian prefab
Contoh penggantian prefab menunjukkan cara menggunakan prefab yang ditentukan untuk mengganti bangunan dari jenis tertentu, atau untuk mengganti bangunan yang disembunyikan oleh SDK karena memiliki jumlah verteks yang melebihi jumlah verteks maksimum yang didukung Unity (65.000 verteks per mesh).
Saat dibuka, scene ini akan berfokus pada Westminster Abbey (London), yang tampaknya digantikan oleh prefab karena model tertentu ini terlalu detail untuk ditangani Unity (dan oleh karena itu dihentikan).
Contoh ini menggunakan komponen ErrorHandling untuk menampilkan error yang dialami oleh komponen MapsService saat memuat geometri.