Saya memiliki proyek Unity tanpa kontrol versi apa pun, dan saya perlu membaginya dengan pengembang lain sehingga kami berdua dapat mengerjakan proyek tersebut.
Strategi apa yang harus digunakan yang bermain bagus dengan Aset Persatuan?
unity
version-control
Matias Valdenegro
sumber
sumber
Jawaban:
Unity memiliki fasilitas bawaan untuk mendukung kontrol versi dengan benar.
Masuk saja ke File-> Project Settings-> Editor dan aktifkan kontrol versi eksternal.
sumber
Saya sarankan menggunakan Git, gratis dan terbaik di sekitar.
Beberapa waktu yang lalu saya menulis tentang kontrol versi (menggunakan Git) di blog saya
Singkat cerita:
Aktifkan kontrol versi eksternal File-> Pengaturan Proyek-> Editor dan buat file .gitignore untuk menghindari hal-hal yang tidak perlu pada repo (ini tidak benar-benar diperlukan, tetapi akan sangat berharga selama pengembangan).
Begini tampilannya file:
sumber
.gitingore
yang saya gunakan untuk proyek-proyek Unity tetapi dengan beberapa peninggalan:[Bb]uild/
,*.booproj
,sysinfo.txt
. Saya cukup yakin apa yang saya gunakan didasarkan pada templat repo baru GitHub untuk Unity ( github.com/github/gitignore/blob/master/Unity.gitignore ) setiap Objective-C (saat menargetkan iOS).Unity 3.0 dikonfigurasi untuk bermain dengan baik dengan subversi. (Setidaknya lebih baik daripada sebelumnya) Saya tidak tahu apakah ini hanya dalam versi pro atau tidak, saya harus memeriksa.
Secara umum, sistem kontrol versi yang paling direkomendasikan adalah Unity Asset Server.
sumber
Khusus kesatuan - bekerja pada adegan berbeda dan file kode berbeda setiap saat, dan menggabungkan perubahan orang lain secara manual. Jika Anda berdua perlu mengerjakan adegan yang sama, duplikat dan gunakan salinan sebagai tes. Kalau tidak, jika Anda berdua memodifikasi adegan yang sama, perubahan satu orang akan menimpa yang lain. Anda masih dapat menggunakan kontrol sumber untuk file sumber Anda, hanya saja jangan memindahkannya sama sekali, dalam sistem file atau melalui Unity, begitu mereka dibuat.
Saran pemula - buat sendiri alat diff / merge yang layak (saya suka WinMerge ) dan biasakan menggunakannya untuk melihat perubahan apa yang dilakukan orang lain, dan untuk menggabungkan perubahan secara manual dalam file yang konflik. Mengatur ruang dokumentasi pusat, mis. dokumen penulisan Google atau wiki, dan simpan dokumentasi Anda di sana - dokumentasi minimal harus berisi daftar fitur dasar sehingga Anda tahu apa yang Anda tuju, dan idealnya daftar tugas yang berasal dari daftar fitur, bersama dengan indikasi yang jelas dari siapa yang mengerjakan tugas. Bicara satu sama lain untuk mendapatkan gambaran kasar tentang siapa yang perlu mengerjakan tugas mana dan mencoret mereka dari daftar saat mereka selesai. Terus meninjau kembali dan mengevaluasi kembali daftar untuk melihat apakah semuanya masih valid dan jika Anda perlu mengerjakan ulang prioritas apa pun.
sumber
Saya bekerja dengan tim yang menyebut dirinya Studio Rusak. Kami telah bergumul dengan masalah yang sama selama bertahun-tahun, dan baru-baru ini akhirnya saya menyerah dan mulai menulis ekstensi untuk membantu saya menggabungkan objek game.
Pada dasarnya pendekatan ini adalah untuk membuat antarmuka seperti inspektur di jendela yang melapisi setiap objek game, komponen, dan properti secara berdampingan untuk perbandingan, dan menyediakan tombol untuk menyalin nilai (atau seluruh objek) dari satu sisi ke sisi lain. Jika Anda terbiasa dengan
SerializedProperty
kelas, itulah yang melakukan sebagian besar pekerjaan di sini. Kami pada dasarnya membuat GUI yang menyinkronkan keadaan lipatan antara sisi kanan dan kiri, dan menciptakan ruang vertikal di mana pun aGameObject
atauComponent
hanya ada di sisi kanan atau kiri. Fungsi perbandingan memeriksa kesetaraan di setiap level, dan mengubah latar belakang setiap baris menjadi merah atau hijau tergantung pada status kesetaraan. Setiap baris yang anak-anaknya mengandung perbedaan juga akan menjadi merah, dan kami juga menyertakan tombol yang bagus untuk mencari pohon secara rekursif dan memperluas semua objek yang berbeda atau memiliki perbedaan pada anak-anak mereka.Selain itu, ada seperangkat bidang mask yang memungkinkan Anda memfilter tipe komponen tertentu dari perbandingan. Atribut GameObject seperti nama, layer, dan tag juga dibandingkan. Kami menggunakan
SerializedObject
danSerializedProperty
untuk menelusurigameObject
properti, dan menggambar mereka seperti mereka digambar di inspektur. Ini memastikan konsistensi, dan lebih mudah untuk dikodekan!Satu detail terakhir yang bagus adalah bahwa proses perbandingan (dipicu ketika objek dimuat dan setiap kali perubahan dilakukan) dijalankan dalam coroutine ad-hoc yang diperbarui oleh
EditorWindow.Update
fungsi, sehingga jika Anda membandingkan objek yang sangat rumit, jendela tidak mengunci editor. Ini adalah suatu keharusan ketika membandingkan objek dengan ratusan (atau ribuan!) Anak-anak. Semua dalam semua, itu semacam "proyek lego" seperti yang suka dikatakan teman saya, tapi jelas alat yang sangat berharga yang langsung menjadi bagian dari alur kerja kolaborasi kami.Alat ini, Unity Merge adalah didokumentasikan pada Menyatukan wiki, yang meliputi peta jalan dan alamat e-mail untuk umpan balik dan masalah pelaporan. Jika Anda benar-benar berjuang dengan penggabungan yang rumit, cobalah dan beri tahu kami pendapat Anda! Juga, saya tidak repot-repot membangunnya menjadi DLL, jadi jangan ragu untuk melihat-lihat sumbernya. Implementasi dan
SerializedProperty
manipulasi ad-hoc coroutine , serta beberapa trik GUI yang akhirnya saya butuhkan adalah bagian besar dari toolkit ekstensi editor Anda. Saya sangat tertarik dengan perubahan / peningkatan yang mungkin dimiliki pengguna, jadi silakan menghubungi kami!sumber
Jika Anda memiliki dana untuk itu, server Aset dengan versi pro Unity cukup baik. Saya telah menggunakannya pada proyek multi-orang besar di masa lalu dan berhasil. Untuk kontrol versi vanila, itu melakukan apa yang kami harapkan.
Saya sudah mencoba menggunakan repositori SVN dengan proyek Unity dan itu agak merepotkan. Namun, kami akhirnya membatalkan ide sebelum membuatnya berhasil. Unity menyimpan banyak file cadangan yang saya tidak ingin meluangkan waktu untuk mencari tahu apa yang akan terjadi jika mereka tidak disinkronkan ke server. Saya pikir, dengan sedikit kemahiran, itu bisa dilakukan tetapi saya belum punya pengalaman dengan itu bekerja dengan baik.
Saya telah melakukan proyek kecil menggunakan fitur DropBox gratis. Itu membuat saya gugup tetapi kami tidak pernah memiliki masalah. Dan, saya tidak berpikir kita akhirnya membutuhkan hal-hal kontrol versi nyata untuk proyek itu jadi saya tidak bisa bicara banyak tentang bagaimana mengembalikan atau menggabungkan file akan hilang.
sumber
Dropbox mendukung versi per file (bukan per komit) dan diputar dengan baik dengan Unity. Awalnya gratis (2 gigabytes) dan cukup murah (sekitar $ 10 untuk 50gig). Anda memerlukan addon PackRat untuk memiliki akses ke riwayat versi.
Sama seperti dengan SVN, CVS, GIT dll., Anda harus memastikan bahwa Anda membuat folder tag ketika Anda sampai ke setiap tahap kunci dalam pengembangan (mis. Akhir minggu, akhir tonggak sejarah). Berbeda dengan yang disebutkan di atas, akan jauh lebih sulit untuk kembali ke tahap seperti itu jika tidak, karena Anda harus mengembalikan setiap file satu per satu. Ingatlah itu saat berkembang dan Anda akan memiliki waktu yang mudah tanpa membayar untuk Server Aset.
sumber