Bagaimana saya bisa membangun game di Unity dengan minimum / tanpa menggunakan editor visual?

24

Saya ingin menulis game sepenuhnya dalam C #. Dalam pencarian saya untuk mesin, saya menemukan Unity3D, tetapi semua tutorial dan dokumentasi berbicara tentang editor visual dan Unity IDE di mana Anda mengklik dan mengarahkan sekitar untuk membuat adegan dan skrip.

Saya tidak ingin melakukan itu. Saya lebih suka cakupan kode penuh daripada desainer abstrak hal-hal yang jauh dari saya. Saya hanya ingin menulis kode C # murni dari awal atau jika diperlukan skrip Unity sebagai tambahan. Saya tidak dapat menemukan penjelasan atau dokumentasi tentang melakukannya; bagaimana saya bisa membangun game menggunakan Unity dan membuat minimum (atau tidak) editor visual?

sinar
sumber
1
Voting to close, ini adalah rekomendasi kerangka kerja yang disamarkan sebagai pertanyaan tentang Unity.
BlueRaja - Danny Pflughoeft
2
Saya tidak benar-benar yakin jika saya setuju dengan itu, meskipun saya tidak akan membatalkan pemilihan umum komunitas. Namun, saya akan mencatat bahwa pertanyaan ini secara khusus menanyakan tentang beberapa kemampuan Unity: jawaban yang tidak membahas yang mungkin dihapus. Mari kita tidak mengubahnya menjadi pertanyaan di luar topik jika kita tidak perlu, oke?
Josh
2
Sebagian besar pengembang mencari editor visual di beberapa titik untuk merancang level mereka, karena memposisikan barang secara visual jauh lebih sederhana daripada mengatur posisi setiap barang kecil dalam kode. Hal yang sama berlaku untuk mengedit / mendesain tata letak GUI. Memiliki barang-barang ini sudah terpasang adalah manfaat IMHO yang besar.
bummzack
4
I prefer writing my own level editor which provides only the stuff really neccessary for my gameoke itu pada dasarnya berarti Anda tidak ingin menggunakan mesin game, Anda ingin pemrograman dengan perpustakaan grafis. Namun Anda sudah mendapatkan hambatan teknis ketika mencoba melakukan itu, jadi ... Saya merasakan kontradiksi di sini.
jhocking
3
@jhocking Kemudian definisi mesin game kami tampaknya sangat berbeda. Pustaka kelas adalah mesin permainan jika itu abstrak tugas-tugas gim yang khas seperti matematika kamera, sistem suara, dan mungkin bahkan sedikit hal-hal fisika, tetapi seorang perancang bukanlah suatu keharusan dan menurut pendapat saya seharusnya tidak harus menjadi suatu keharusan yang harus digunakan .
Ray

Jawaban:

27

Saya seorang pemula yang lengkap di Unity, tetapi inilah yang saya lakukan saat ini, dan ini mengurangi penggunaan editor menjadi minimum:

Di editor, saya hanya punya tiga objek: GameObject kosong bernama "main", kamera, dan lampu. Dan ini hanya karena sejauh ini saya hanya bekerja dengan satu kamera dan satu lampu, jadi lebih cepat seperti ini. Nanti saya mungkin akan menghapusnya, dan hanya "utama" akan tetap.

Dalam "Aset / MySkrip" saya memiliki kelas "Utama", yang ditambahkan ke GameObject "utama" sebagai perilaku. Yang berarti bahwa ketika program dimulai, kelas "Utama" di instantiated dan metodenya disebut. Kelas "Utama" adalah seperti ini:

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

Dalam permainan saya secara dinamis membangun lingkungan seperti ini:

GameObject floor = GameObject.CreatePrimitive (PrimitiveType.Cube);
floor.renderer.material.color = RandomGreen ();

Tapi ini karena sejauh ini saya hanya membuat prototipe. Nanti saya ingin mengganti kubus dengan beberapa hal bagus yang diedit di Blender. Yang akan membutuhkan membuatnya di Blender, dan mengimpornya ke Unit sebagai "cetakan". Lalu, saya juga akan instantiate "cetakan" dari kode C #.

Jika Anda ingin membuat objek bereaksi terhadap peristiwa, seperti tabrakan dengan objek lain, Anda dapat membuat instance objek dan menambahkannya secara dinamis kelas perilaku, yang merupakan kelas C # yang berasal dari MonoBehavior. Misalnya, jika Anda ingin memiliki mobil, Anda membuat prefab mobil, dan menulis kelas "CarBehavior" untuk perilakunya dalam permainan.

Dengan cara ini Anda dapat mengurangi interaksi dengan editor ke minimum, meskipun mungkin tidak sepenuhnya nol. Sekarang tergantung pada apakah ini solusi yang dapat diterima untuk Anda.

Viliam Búr
sumber
2
Saya akan mengatakan ini sepertinya jawaban yang cukup jelas dan solid untuk pemula Unity :)
Ray
Terima kasih! Saya adalah programmer yang berpengalaman, tetapi ini adalah proyek pertama saya di Unity dan masih jauh dari selesai. Saya belum menggunakan cetakan. Mungkin ada beberapa komplikasi yang saat ini tidak saya sadari, jadi saya sarankan mengambil saran saya dengan sebutir garam. Ngomong-ngomong, serialisasi dalam Unity terasa agak kontra-intuitif bagi saya. Saya harus mempelajarinya lebih dalam, dan itu mungkin memengaruhi beberapa keputusan desain.
Viliam Búr
9

Ketika bekerja dengan Unity Anda harus melakukan beberapa pekerjaan di dalam editor Unity; itulah cara kerja Unity.

Namun sebagian besar dari apa yang akan Anda lakukan sebagai programmer tidak terjadi dalam editor Unity; file skrip adalah file teks eksternal yang ditulis dalam IDE eksternal, dan sebagai programmer Anda hanya menggunakan editor Unity untuk menghubungkan skrip mana yang harus dijalankan dan kemudian memukul Play untuk benar-benar menjalankan game. Itu tidak seperti menghubungkan di kelas di pengaturan proyek, dan kemudian menekan Run dalam IDE Anda.

Sebagian besar alat pengembangan gim lain yang memiliki editor visual pusat juga dibebani dengan dukungan penulisan skrip yang terbatas dan tidak fleksibel, tetapi Unity tidak mengalami kekurangan itu. Meskipun segala sesuatu yang diciptakan untuk Unity akhirnya melalui editor visual, antarmuka inti ini melibatkan banyak proyek yang menghubungkan ke kode kustom yang berjalan di mesin permainan Unity. Pemrogram berpengalaman, jangan mengabaikan lingkungan pengembangan ini, salah mengartikannya sebagai pencipta permainan klik bersama dengan kemampuan pemrograman terbatas!

(juga, sepertinya buku yang saya tulis saat ini akan menjadi sumber yang bagus untuk Anda, karena ditargetkan pada programmer yang berpengalaman)

jhocking
sumber
1
berada di tengah membaca buku Anda ketika saya menemukan jawaban ini
max pleaner
6

Saya percaya apa yang Anda cari adalah Futile Framework for Unity.

Pada dasarnya, Anda kemudian dapat melakukan semua pemrograman Anda menggunakan skrip tanpa harus "drag and drop" barang atau banyak berantakan dengan editor visual. Yang Anda butuhkan adalah satu GameObject di Scene Anda yang akan menjadi wadah untuk seluruh permainan Anda. Anda kemudian melakukan semuanya secara prosedural seperti yang Anda lakukan dengan editor non-visual.

Penafian: Sementara Futile sangat kode sentris, tidak dapat dihindari bahwa Anda harus mengacaukan editor Unity dengan cara tertentu. Tapi ini sangat berkurang dengan Futile.

midasmax
sumber
2

Saya ingin menambahkan semua jawaban yang baik di sini, terutama jawaban @jhocking:

Hampir semua yang saya temukan di Unity memiliki rekanan teks biasa di pohon folder proyek. Saya telah langsung mengedit cetakan dan permainan Game tanpa membuka Unity, dan perubahan itu berhasil ditemukan oleh pengembang lain setelah melakukan.

Walaupun saya tidak tahu banyak tentang Futile Framework hingga hari ini, sepertinya ini adalah cara yang sangat luar biasa untuk mendapatkan semuanya.

Saat ini saya menggunakan semua hal seret-dan-jatuhkan daripada berbasis skrip, tetapi itu harus berubah karena tujuan saya akan memiliki level dan penjahat yang dihasilkan secara prosedural.

Dua sen saya mengatakan pada dasarnya dapatkan beberapa objek yang Anda butuhkan di Unity, lalu andalkan skrip dalam editor eksternal. Anda dapat melakukan hampir semua hal dalam teks biasa.

vulpineblazeyt
sumber