Editor Berfungsi, Build Gagal: Lacak Error Konsol ke Skrip dan Referensi Scene dengan Unity MCP
Saat Play di Editor normal tetapi build Player/perangkat gagal atau NRE saat scene dimuat: lapisan A/B/C, gunakan Cursor + Unity MCP untuk membaca Konsol, verifikasi Build Settings dan referensi serialisasi—dengan contoh stack, pemeriksaan manual, dan perbaikan minimal.
- Unity MCP
- Unity
- Console
- build
- Android
- Cursor
- troubleshooting
- AI game development
Thread dengan judul “Unity berfungsi di editor, gagal di perangkat / build” terlihat sama: Play berjalan normal, kemudian build Player / perangkat menjadi merah, crash, layar hitam, atau melempar NullReferenceException saat memasuki scene. Mesin jarang “rusak”—jalur editor menyembunyikan kesenjangan referensi dan platform: scene tidak ada dalam daftar build, field serialisasi yang None di disk, sensitivitas huruf pada path, atau API UnityEditor yang bocor ke assembly runtime hingga waktu pack.
Postingan ini memiliki tiga fokus utama (sama seperti judul):
- Konsol / stack → objek skrip dan scene
- Verifikasi Build Settings, Missing Script, referensi serialisasi
- Diagnosis read-only di Cursor melalui Unity MCP → perbaikan minimal setelah Anda konfirmasi
Tidak ada panduan instalasi plugin, tidak ada panduan pengiriman ke toko lengkap. Stripping IL2CPP dan plugin native tetap di lampiran.
Terkait:
- Instalasi Unity MCP
- Unity MCP dengan Claude Code dan Cursor
- Hubungkan HUD AI Studio ke event kesehatan (wiring yang benar; postingan ini adalah “cara menemukan kerusakan”)
Pertama: lapisan mana yang gagal?
A. Jendela Build merah (gagal kompilasi / pack)
↓
B. Build berhasil; perangkat mati atau layar hitam saat peluncuran
↓
C. Game dimulai; scene atau fitur meledak saat runtime
| Apa yang Anda lihat | Lapisan | Periksa pertama di sini |
|---|---|---|
Build gagal, error CS… / tipe tidak ditemukan | A | Assembly runtime yang mereferensikan UnityEditor, #if salah, asmdef |
| NRE / MissingReference pada scene boot | B/C | Scene dalam daftar build, Missing Script, None di Inspector |
Hanya gagal pada Resources.Load / scene aditif | C | Sensitivitas huruf pada path, aset dalam pack, scene benar-benar dimuat |
Unity MCP paling kuat pada editor yang terbuka: Konsol, Hierarchy, field komponen. Stack logcat / Xcode perangkat harus ditempel ke Cursor—atau kirim Development Build dan reproduksi dengan scene boot yang sama di Editor jika memungkinkan.
Loop pemecahan masalah (manual + MCP)
Jangan lewati langkah manual dan minta AI menulis ulang Player.
Langkah 0: Bekukan scene secara manual (~2 menit)
Sebelum Cursor:
- Catat versi Unity dan target (mis. Android / IL2CPP)
- Bersihkan Window → General → Console, lalu Build atau Development Build sekali
- Salin Error relevan pertama (dengan stack)—bukan dinding Warning
- Buka File → Build Settings: apakah scene yang dicurigai dicentang? Apakah indeks 0 adalah scene boot?
- Jika Anda mengedit instance Prefab: apakah Anda Apply? Override yang tidak diterapkan sering kali tidak pernah mencapai aset disk yang Anda kira Anda kirim
Langkah 1: Triage Konsol read-only MCP
Ringkas Error Konsol yang terkait dengan build / Play terakhir ini (abaikan Info).
Klasifikasikan sebagai kompilasi / Missing Script / NullReference / pemuatan resource.
Sebutkan path skrip, baris, nama GameObject per error jika ada.
Jangan ubah aset apa pun.
Langkah 2: “Trio referensi” manual + MCP
Untuk NRE runtime (B/C), pilih objek stack di editor dan periksa silang dengan MCP:
| Manual | Prompt MCP |
|---|---|
| Daftar Build Settings (screenshot atau dikte) | “Sebutkan path scene Build Settings dan flag enabled; sebutkan scene boot.” |
| Inspector: Missing Script / referensi None | ”Di scene <Nama>, sebutkan Missing Script; periksa field serialisasi pada <Objek>.<Komponen> untuk None. Hanya tabel. Jangan edit.” |
| Aset Prefab vs instance scene | ”Apakah <X> aset Prefab atau instance scene? Ada override yang tidak diterapkan jika terlihat? Laporkan saja.” |
Aturan: Pack menggunakan scene/Prefab di disk. Isi sementara OnValidate yang “terlihat baik” di Editor tidak dihitung—percayai nilai serialisasi dari MCP/Inspector.
Langkah 3: Template diagnosis, lalu konfirmasi
[Batasan]
- Diagnosis dan usulkan rencana minimal; tunggu OK saya sebelum mengedit
- Jangan memalsukan perbaikan dengan GameObject.Find massal
- Sentuh hanya skrip/Prefab/scene yang terkait dengan Error ini
[Scene]
- Play Editor: OK / rusak (jujur)
- Platform / build: …
- Scene boot Build Settings: …
- Stack Konsol / perangkat (mentah):
<tempel>
[Jawaban]
1. Lapisan A / B / C
2. 1–2 akar penyebab teratas (tidak dalam build / referensi None / Missing Script / huruf / API Editor…)
3. Objek dan nama field yang harus saya verifikasi
4. Langkah perbaikan minimal (jangan dieksekusi)
Langkah 4: Tulis minimal + periksa ulang
Terapkan perbaikan minimal yang dikonfirmasi: hanya <objek.field> atau beberapa baris di <path skrip> untuk Error ini.
Simpan scene/Prefab.
Lalu periksa ulang read-only: field masih None? Error yang sama masih di Konsol?
Contoh kerja: stack → field
Log Player/perangkat sintetis tetapi realistis (ganti path dengan proyek Anda).
Log
NullReferenceException: Object reference not set to an instance of an object
at HudHealthView.HandleHealthChanged (System.Single current, System.Single max) [0x00000] in Assets/Scripts/UI/HudHealthView.cs:42
at PlayerHealth.TakeDamage (System.Single amount) [0x00000] in Assets/Scripts/Combat/PlayerHealth.cs:28
at DebugDealDamage.Update () [0x00000] in Assets/Scripts/Debug/DebugDealDamage.cs:15
Lapisan
- Mencapai
Update→ bukan A (kompilasi OK) - Mati saat damage → C (runtime); curigai referensi UI, bukan “tulis ulang combat”
Manual
- Apakah scene HUD ada di Build Settings?
- Pilih objek
HudHealthView; apakahhealthFill/playerHealthNone? - Edit Prefab: Sudah Apply?
MCP
Read-only: buka scene yang berisi HUD.
1. Temukan objek dengan HudHealthView
2. Laporkan apakah healthFill, playerHealth (dan sejenisnya) None / Missing
3. Jangan edit
Jika None: rencana minimal adalah tetapkan ulang referensi dan simpan—bukan ubah TakeDamage.
Perbaikan minimal (setelah OK)
- Seret Image
HUD_HealthFill→healthFill;PlayerHealthmilik Player →playerHealth - Simpan; Development Build; terima damage lagi
”Perbaikan” buruk (jangan)
// Anti-pattern: Find menyembunyikan None — tetap rusak saat rename / muat aditif
healthFill = GameObject.Find("HUD_HealthFill").GetComponent<Image>();
Wiring yang benar: HUD → event kesehatan. Di sini: tandai field dari stack, lalu ikat ulang.
Matriks gejala (fokus utama)
Gejala 1: Build merah — tipe tidak ditemukan / UnityEditor
| Kemungkinan penyebab | Manual | MCP |
|---|---|---|
| Skrip runtime menggunakan API Editor | Apakah file di luar Editor/? | ”Cari UnityEditor. di luar folder Editor; sebutkan path saja.” |
#if terbalik, tipe Player hilang | Periksa UNITY_EDITOR membungkus | ”Tipe mana yang ada di Editor vs Player untuk file ini?” |
| Kesenjangan asmdef | Buka .asmdef yang gagal | ”Sebutkan referensi asmdef; mana yang hilang?” |
Anti-pattern (API Editor di assembly runtime → build Player gagal):
using UnityEngine;
using UnityEditor; // Gagal build jika bukan assembly Editor
public class BadBake : MonoBehaviour
{
[MenuItem("Tools/Bad")] // ketergantungan UnityEditor lebih lanjut
static void Run() { }
}
Perbaikan A: seluruh file di bawah Editor/
Assets/Scripts/Editor/BakeTools.cs ← kompilasi khusus editor
Perbaikan B: isolasi dalam file (hanya jika harus berbagi file)
using UnityEngine;
public class RuntimeSafe : MonoBehaviour
{
public void DoGameplay() { /* terlihat oleh Player */ }
#if UNITY_EDITOR
[ContextMenu("Debug/Fill Refs")]
void EditorOnlyFill()
{
// Hanya editor — jangan perlakukan ini sebagai data runtime yang di-pack dari Awake
}
#endif
}
Lebih bersih: skrip khusus Editor + asmdef sehingga assembly runtime tidak pernah menarik referensi Editor.
Gejala 2: NRE perangkat saat masuk scene; Play Editor “tampak baik”
Periksa secara berurutan—tanpa penulisan ulang besar-besaran paralel:
- Scene tidak ada di Build Settings atau scene boot salah
- Missing Script / serialisasi None (termasuk Prefab yang tidak di-Apply)
- Scene aditif tidak dimuat sebelum Find / akses
- Sensitivitas huruf
Resources.Load(Editor macOS sering tidak sensitif huruf; Android tidak)
1. Laporkan scene Build Settings, flag enabled, indeks boot
2. Sebutkan semua Missing Script di scene <X>
3. Periksa referensi publik pada GameManager / Player / HUD di sepanjang jalur boot untuk None
Laporkan saja; jangan edit.
| Di Editor | Di pack | Penyebab umum |
|---|---|---|
| Referensi tampak terisi | Runtime None | Override instance tidak diterapkan; file scene salah diedit |
Find berfungsi | Device null | Objek di scene yang tidak dimuat; nama tidak cocok |
Resources.Load berfungsi | Device null | Sensitivitas huruf path; aset tidak di bawah Resources/ |
// Di disk: Assets/Resources/UI/HealthBar.png
// Sering gagal di Android (ketidakcocokan huruf):
Resources.Load<Sprite>("ui/healthbar");
// Cocokkan path di bawah Resources, mis.:
Resources.Load<Sprite>("UI/HealthBar");
Cari string path Resources.Load / Addressables.LoadAssetAsync;
buat tabel sensitif huruf vs path relatif nyata. Jangan edit kode dulu.
Gejala 3: Konsol dibanjiri Missing Script
Pindai scene <X> dan Prefab <path>:
Sebutkan path GameObject dengan Missing Script.
Per item: sarankan melampirkan ulang skrip asli atau menghapus komponen kosong (dari nama/GUID sisa jika terlihat).
Jangan hapus massal secara otomatis.
Manual: konfirmasi file skrip masih ada dan asmdef/GUID tidak rusak; konfirmasi satu per satu sebelum menghapus yang kosong.
Daftar periksa penerimaan
- Error yang cocok hilang dari Konsol
- Play Editor melewati jalur yang sama yang gagal (masuk level, terima damage, buka UI…)
- Satu Development Build ke target (atau Player lokal)
- MCP periksa ulang read-only: field yang dicurigai tidak lagi None / Missing
- Diff Git hanya perubahan kecil scene/Prefab/skrip yang diharapkan—tanpa refactor tambahan
Periksa ulang read-only: ada None atau Missing Script pada <daftar objek>? Sebutkan pengecualian. Jangan edit.
Batasan prompt
| Jangan | Lakukan |
|---|---|
| ”Buat Play berfungsi saja” | Lapisan A/B/C + tandai field dari stack |
| Find massal alih-alih referensi | Perbaiki field serialisasi atau injeksi eksplisit |
| Atur ulang Build Settings tanpa diminta | Laporkan daftar saat ini dan scene boot dulu |
| ”Ada NRE” | Tempel 20–40 baris stack pertama |
Batasan produk
- Unity MCP: editor Konsol, Hierarchy, skrip, referensi—fokus utama artikel ini.
- AI Studio: struktur UI ke dalam engine; ikat ulang setelah ekspor ulang sesuai postingan wiring—jangan Find UI dari gameplay.
- Sertifikat, toko, ROM OEM: tempel teks log ke Cursor untuk bantuan membaca; di luar lingkup edit scene MCP.
Lampiran: umum tetapi di luar fokus utama
Singkirkan fokus utama artikel ini dulu:
| Gejala | Arah |
|---|---|
| Development OK, Release mati | Managed Stripping / link.xml; MCP: “Tebak tipe yang di-strip dari crash stack; usulkan link.xml; jangan tulis file dulu.” |
| Crash native Android (unmanaged) | .so / izin / Gradle; tempel logcat untuk dibaca |
| API Unity di luar thread utama | Periksa callback async kembali ke thread utama |
Jangan gabungkan stripping dan Missing Script menjadi satu “penulisan ulang besar”.
- Editor OK / pack rusak → perlakukan sebagai referensi / scene dalam build / path / API Editor dulu
- Manual bekukan Build Settings + Error pertama, lalu triase read-only MCP
- Stack → baris skrip → field komponen; ikat ulang atau hapus komponen kosong setelah konfirmasi
- Tanpa
Findatau penulisan ulang gameplay sebagai perbaikan palsu - Terima dengan Development Build + periksa ulang read-only
Jalankan “bekukan → lapisan → trio referensi → tandai field seperti contoh” dan sebagian besar bug referensi perangkat menyusut menjadi diff kecil yang dapat ditinjau.
Lanjutkan membaca
Panduan lain yang mungkin Anda suka
Pengujian Game Otomatis dengan AI IDE + Engine MCP: Jalur Praktis
Untuk proyek Unity, Godot, dan Cocos: gunakan Cursor (atau sejenisnya) dengan engine MCP untuk pemeriksaan smoke yang dapat diulang, audit konvensi, dan pembuatan kerangka pengujian.
- game testing
- MCP
- AI IDE
- automation
Figma ke Unity UI: Dari Design Frames ke Prefabs dengan VberAI Studio
Ubah tata letak Figma menjadi hierarki Unity UI—impor, edit bahasa alami, dan ekspor prefab di VberAI Studio, plus peran Figma MCP dan Unity MCP setelah handoff.
- figma-to-unity
- figma-to-code
- figma-ai
- figma-design
Hierarki Informasi HUD Mobile: Apa yang Ditampilkan saat Combat, Lobby, dan Modal
Visibilitas dan prioritas HUD per state game; kaitannya dengan Safe Area, layer floating text, dan stacking modal—tabel spesifikasi plus langkah Play dan acceptance perangkat.
- game-ui-design
- game-dev-ai
- ui-to-engine
- hud