Birlik Takım Çalışması


30

Herhangi bir sürüm kontrolüne sahip olmayan bir Unity projem var ve başka bir geliştiriciyle paylaşmam gerekiyor, böylece her ikimiz de proje üzerinde çalışabiliriz.

Unity Assets ile iyi oynayan hangi stratejiler kullanılmalıdır?


: Umarım bu makale bazı ipuçları verecektir düşünüyorum va.lent.in/blog/2011/12/13/...
Den

2
DropBox sürüm kontrolünü destekliyor, bu özellik "Pack-Rat" olarak adlandırılıyor ancak ücretsiz değil. Acemi indie geliştiriciler için tavsiye için daha önce çok sayıda soru soruldu. Biraz dolaşmanızı öneririm. Sonunda GameDev SE'ye Hoşgeldiniz!
Quazi Irfan

Varlık sunucusu olmadan prefabrik bina ve sahnelerde ileri geri hareket ederken bazı sorunlar olabilir
Sidar

Yanıtlar:


17

Unity, sürüm kontrolünü doğru bir şekilde desteklemek için yerleşik bir tesise sahiptir.

Sadece Dosya-> Proje Ayarları-> Editöre gidin ve harici versiyon kontrolünü etkinleştirin.


4
Bu sadece bir Pro özelliği mi? Bu menü öğesini Unity 2.6'nın ücretsiz / indie Windows sürümünde görmüyorum.
James

1/30/2011 itibariyle, yalnızca Pro içindir. 2. paragrafa bakınız: unity3d.com/support/documentation/Manual/…
ojrac

11
Unity'nin (3.5 RC1) en son geliştirici önizlemesi, ücretsiz sürümde sürüm kontrolünü desteklemek için bir değişiklik yaptı. changelog'dan ( unity3d.com/unity/preview/notes ): Lisans: Genel harici sürüm kontrolü (.meta dosyaları) artık ücretsiz sürümde bulunmaktadır.
Kronik Oyun Programcısı,

2
Sadece gelecekteki ziyaretçiler için Bilgilendirici, bu cevaba tarihini not edin; şimdiye kadar güncel değil. Şimdi herhangi bir ayarı açmanıza gerek yoktur; sadece "Varlıklar" (sürüm kontrolünüzün gizli .meta dosyaları aldığından emin olun) klasörlerini sürümlendirin ve "Proje Ayarları" nı kullanın ve her şeyi yoksayın.
14'te atıyor

10

Git'i tavsiye ederim, ücretsiz ve en iyisi.

Bir süre önce blogumda sürüm kontrolü (Git kullanarak) hakkında yazdım.

Uzun lafın kısası:

Harici sürüm kontrolünü etkinleştirin Dosya-> Proje Ayarları-> Düzenleyici ve depodaki gereksiz şeyleri önlemek için .gitignore dosyasını oluşturun (bu gerçekten gerekli değildir, ancak geliştirme sırasında paha biçilmez olacaktır).

Dosyanın nasıl görünmesi gerektiği:

[Oo]bj/
[Tt]emp/
[Ll]ibrary

#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs

Bu, hemen hemen aynıdır .gitingoreBirlik projeleri için ben kullanımı ancak birkaç ihmaller ile: [Bb]uild/, *.booproj, sysinfo.txt. Kullandığımın GitHub'ın Unity için yeni repo şablonlarına ( github.com/github/gitignore/blob/master/Unity.gitignore ) herhangi bir Objective-C ( iOS'u hedeflerken ) dayandığından eminim .
Slipp D. Thompson

Blogunuzdaki Dahili Sunucu Hatası.
Santosh Kumar

4

Unity 3.0, subversion ile iyi oynayacak şekilde yapılandırılmış. (En azından öncekinden daha güzel) Bunun sadece profesyonel sürümde olup olmadığını bilmiyorum, kontrol etmem gerekecek.

Genel olarak, en önerilen sürüm kontrol sistemi Unity Asset Server'dır.


4

Birliğe özgü - her zaman farklı sahneler ve farklı kod dosyaları üzerinde çalışın ve diğer kişinin değişikliklerini manuel olarak birleştirin. İkinizin de aynı sahnede çalışması gerekiyorsa, kopyalayın ve kopyayı test olarak kullanın. Aksi takdirde, her ikisi de aynı sahneyi değiştirirseniz, bir kişinin değişiklikleri diğerinin üzerine yazacaktır. Kaynak dosyalarınız için kaynak kontrolünü hala kullanabilirsiniz, oluşturulduktan sonra dosya sisteminde veya Unity aracılığıyla dosyalarınızı dolaştırmayın.

Başlangıç ​​tavsiyesi - kendinize iyi bir fark / birleştirme aracı edinin ( WinMerge'i severim ) ve diğer kişinin ne değişiklik yaptığını görmek ve çakışan dosyalardaki değişiklikleri elle birleştirmek için kullanmaya alışın. Örneğin merkezi bir dokümantasyon alanı kurun. bir Google yazılı belge veya wiki ve belgelerinizi orada tutun - belgeler, asgari bir temel özellik listesi içermelidir, böylece neyi hedeflediğinizi ve ideal bir şekilde özellik listesinden türetilmiş bir görev listesini ve net bir göstergeyi içermelidir. kimin görevi üzerinde çalışıyor. Kimin hangi görevi üzerinde çalışması gerektiği ve yaptıkları listeden çıkarması gereken kaba bir fikir edinmek için birbirinizle konuşun. Her şeyin hala geçerli olup olmadığını ve öncelikleri yeniden düzenlemeniz gerekip gerekmediğini görmek için listeyi tekrar gözden geçirin ve yeniden değerlendirin.


Teşekkür ederim! Her iki sorunum için de bana harika tavsiyeler verdin.
nosferat

4

Kendisine Kusurlu Stüdyoları denen bir ekiple çalışıyorum. Yıllarca aynı konuyla uğraştık ve kısa süre önce nihayet girdim ve gameobject'leri birleştirmeme yardımcı olacak bir uzantı yazmaya başladım.

Temel olarak yaklaşım, her gameobject, komponent ve özelliği karşılaştırma için yan yana dizen ve değerleri (veya tüm nesneleri) bir taraftan diğerine kopyalamak için düğmeler sağlayan bir pencerede denetçi benzeri bir arayüz oluşturmaktır. Eğer SerializedPropertysınıfa aşina iseniz , burada işin büyük kısmını yapan şey budur. Temel olarak katlama durumunu sağ ve sol taraf arasında senkronize eden ve her yerde bir GameObjectveya daha fazla dikey boşluk oluşturan bir GUI oluştururuz.Componentsadece sağ veya sol tarafta var. Karşılaştırma fonksiyonu her seviyede eşitliği kontrol eder ve eşitliğin durumuna bağlı olarak her çizginin arka planını kırmızı veya yeşile dönüştürür. Çocukları fark içeren her satır da kırmızı olur ve ağacı tekrarlayarak aramak ve çocuklarında farklı olan tüm nesneleri genişletmek için şık bir düğme de ekleriz.

Ayrıca, karşılaştırmadan belirli bileşen türlerini filtrelemenize izin veren bir maske alanı kümesi vardır. Adı, katmanı ve etiketi gibi GameObject öznitelikleri de karşılaştırılır. 'Özelliğini kullanabilmek için kullanırız SerializedObjectve bunları denetçide çizildiği şekilde çizeriz. Bu tutarlılık sağlar ve kodlanması çok daha kolay bir halt!SerializedPropertygameObject

görüntü tanımını buraya girin

Son şık ayrıntılardan biri, karşılaştırma işleminin (nesneler yüklendiğinde ve bir değişiklik yapıldığında tetiklenen), EditorWindow.Updatekarmaşık bir nesneyi karşılaştırmanız durumunda , işlev tarafından güncellenen geçici bir koroinde yürütülmesidir. Pencere editörü kilitlemiyor. Yüzlerce (veya bin!) Çocuğu olan nesneleri karşılaştırırken bu bir zorunluluktu. Sonuçta, arkadaşımın dediği gibi bir tür "lego projesi" oldu, ama kesinlikle işbirliği iş akışımızın bir parçası haline gelen paha biçilmez bir araç.

Aracı, Birlik Birleştirme olduğu belgelenmiş bir yol haritası ve geri bildirim ve konu raporlama için bir e-posta adresini içerir Birleştirmek wiki üzerinde. Gerçekten karmaşık bir birleşme ile mücadele ediyorsanız, bir şans verin ve bize ne düşündüğünüzü bildirin! Ayrıca, bir DLL içine inşa zahmet etmedi, bu yüzden kaynağında dürtmek için çekinmeyin. Özel coroutine uygulaması ve SerializedPropertymanipülasyonları ile ihtiyaç duyduğum birkaç GUI numarası editör eklentisi araç setinizin büyük bir bölümünü oluşturuyor. Kullanıcıların sahip olabileceği değişikliklerle / iyileştirmelerle ilgileniyorum, bu yüzden lütfen iletişime geçin!


1
Yararlı bir araca benziyor, önceki "yalnızca bağlantı" yanıtınızı geliştirdiğiniz için teşekkür ederiz.
MichaelHouse

1

Bunun için paranız varsa, Unity'nin pro sürümüne sahip Asset sunucusu oldukça iyi. Geçmişte büyük, çok kişili bir projede kullandım ve işi yaptım. Vanilya sürüm kontrolü için, yapmayı beklediğimiz şeyi yaptı.

Bir Unity projesiyle birlikte bir SVN deposu kullanmayı denedim ve biraz güçtü. Ancak, işe yaramadan önce fikri hurdaya çıkardık. Unity, sunucuya senkronize edilmemişlerse ne olacağını bulmak için zaman ayırmak istemediğim birçok yedekleme dosyasını tutar. Bence, biraz incelikli, yapılabilir olabilir, ancak iyi çalıştığı konusunda deneyimim olmadı.

DropBox'ın ücretsiz özelliklerini kullanarak küçük bir proje yaptım. Bu beni tedirgin etti ama hiç sorun yaşamadık. Ve, bu proje için herhangi bir gerçek sürüm kontrol malzemesine ihtiyaç duyduğumuzu sanmıyorum, bu nedenle dosyaları geri alma veya birleştirme işleminin nasıl gideceği konusunda çok fazla konuşamıyorum.


1

Dropbox, dosya başına sürüm oluşturmayı (taahhüt başına değil) destekler ve Unity ile iyi oynar. Başlangıçta ücretsiz (2 gigabayt) ve bundan sonra oldukça ucuz (50 gig için yaklaşık 10 dolar). Sürüm geçmişine erişebilmek için PackRat eklentisine ihtiyacınız var.

Aynı SVN, CVS, GIT vb. Gibi, geliştirme aşamasındaki her bir aşamaya geldiğinizde (örneğin, hafta sonu, dönüm noktası sonu) etiket klasörleri oluşturduğunuzdan emin olmanız gerekecektir. Yukarıda belirtilenlerin aksine, böyle bir aşamaya geri dönmek çok daha zor olacaktır , çünkü her bir dosyayı ayrı ayrı geri almak zorunda kalacaksınız. Geliştirme sırasında bunu aklınızda bulundurun ve Asset Sunucusu için ödeme yapmadan kolay zaman geçirin.


Bu sooooo olsa acı verici. Birliğin her sahneyi farklı bir bilgisayarda açtığınızda, birliği yeniden inşa etmesi gerekiyor. Bu, kitaplık klasörünü her işlem için bir çok yerde değiştirir. Kütüphane klasörünü gözardı etmek iyi olurdu, ancak sürüm denetimli sahne dosyalarınız olmazdı. Ekibim vazgeçti, bir sürü profesyonel lisans aldı ve varlık sunucusu kullandı.
brandon

@brandon Tahmin et proje büyüklüğüne bağlı.
Mühendis

1
Kuşkusuz, sınırlı bütçeli bir kaç kişi varsa, yaklaşımınızı gerçekten tek olduğu gibi öneririm
brandon

Ama hiç 2 gb altında kalan bir proje üzerinde çalıştınız mı? dahil edeceğiniz modeller ve dokular ne olacak? Bitbucket.com'a bir göz atın ve git öğrenmeye başlayın!
XandruCea,

Kesinlikle. Android / iOS projeleri tecrübelerime göre kesinlikle bu boyutun altında kalıyor (yıl boyunca bu cevabı yazdım). Ayrıca, arkadaşları davet ederek Dropbox'ta daha fazla yer kazanabilirsiniz.
Mühendis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.