Làm việc theo nhóm trong Unity


30

Tôi có một dự án Unity mà không có bất kỳ kiểm soát phiên bản nào và tôi cần chia sẻ nó với một nhà phát triển khác để cả hai chúng tôi có thể làm việc với dự án.

Những chiến lược nào nên được sử dụng để chơi tốt với Tài sản Unity?


Tôi nghĩ rằng bài viết này sẽ cung cấp cho bạn một số mẹo: va.lent.in/blog/2011/12/13/NH
Den

2
DropBox hỗ trợ kiểm soát phiên bản, tính năng này được gọi là "Pack-Rat" nhưng nó không miễn phí. Để được tư vấn cho các nhà phát triển độc lập mới bắt đầu, nhiều câu hỏi đã được đặt ra trước đây. Tôi sẽ đề nghị bạn đi bộ xung quanh một chút. Cuối cùng Chào mừng bạn đến với GameDev SE!
Quazi Irfan

Không có máy chủ tài sản, có thể có một số vấn đề khi di chuyển qua lại các cảnh và khung cảnh
Sidar

Câu trả lời:


17

Unity có một cơ sở tích hợp để hỗ trợ kiểm soát phiên bản đúng cách.

Chỉ cần đi vào Tệp-> Cài đặt dự án-> Trình chỉnh sửa và bật kiểm soát phiên bản bên ngoài.


4
Đây có phải là tính năng chỉ dành cho Pro? Tôi không thấy mục menu đó trong phiên bản Windows miễn phí / độc lập của Unity 2.6.
James

Kể từ ngày 30 tháng 1 năm 2011, nó chỉ dành cho Pro. Xem đoạn 2 của: unity3d.com/support/documentation/Manual/ từ
ojrac

11
Bản xem trước dành cho nhà phát triển mới nhất của Unity (3.5 RC1) đã thực hiện thay đổi để hỗ trợ kiểm soát phiên bản trong phiên bản miễn phí. từ changelog ( unity3d.com/unity/preview/notes ): Giấy phép: Kiểm soát phiên bản bên ngoài chung (tệp .meta) hiện có sẵn trong phiên bản miễn phí.
Lập trình viên trò chơi mãn tính

2
chỉ fyi cho khách truy cập trong tương lai, lưu ý ngày trên câu trả lời này; bây giờ là cách hết hạn Bây giờ không cần phải bật bất kỳ cài đặt nào; chỉ phiên bản các thư mục "Tài sản" (đảm bảo kiểm soát phiên bản của bạn đang chọn các tệp .meta ẩn) và "Cài đặt dự án" và bỏ qua mọi thứ khác.
jhocking

10

Tôi khuyên bạn nên sử dụng Git, nó miễn phí và tốt nhất xung quanh.

Cách đây một thời gian tôi đã viết về kiểm soát phiên bản (sử dụng Git) trên blog của mình

Mẩu chuyện dài:

Bật kiểm soát phiên bản bên ngoài Tệp-> Cài đặt dự án-> Trình chỉnh sửa và tạo tệp .gitignore để tránh những thứ không cần thiết trên repo (điều này không thực sự cần thiết, nhưng nó sẽ vô giá trong quá trình phát triển).

Đây là cách tập tin trông như thế nào:

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

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

Đây là gần như giống như .gitingoretôi sử dụng cho các dự án Unity nhưng với một vài ommissions: [Bb]uild/, *.booproj, sysinfo.txt. Tôi khá chắc chắn những gì tôi sử dụng dựa trên các mẫu repo mới của GitHub cho Unity ( github.com/github/gitignore/blob/master/Unity.gitignore ) bất kỳ Objective-C (khi nhắm mục tiêu iOS).
Slipp D. Thompson

Lỗi máy chủ nội bộ trên blog của bạn.
Santosh Kumar

4

Unity 3.0 được cấu hình để chơi độc đáo với lật đổ. (Ít nhất là đẹp hơn trước) Tôi không biết nếu đây chỉ là phiên bản pro hay không, tôi sẽ phải kiểm tra.

Nhìn chung, hệ thống kiểm soát phiên bản được khuyên dùng nhiều nhất là Máy chủ tài sản Unity.


4

Unity cụ thể - hoạt động trên các cảnh khác nhau và các tệp mã khác nhau mọi lúc và hợp nhất trong các thay đổi của người khác theo cách thủ công. Nếu cả hai bạn cần phải làm việc trên cùng một cảnh, sao chép nó và sử dụng bản sao làm thử nghiệm. Mặt khác, nếu cả hai bạn sửa đổi cùng một cảnh, các thay đổi của một người sẽ ghi đè lên cảnh kia. Bạn vẫn có thể sử dụng kiểm soát nguồn cho các tệp nguồn của mình, chỉ cần không di chuyển chúng xung quanh, trong hệ thống tệp hoặc thông qua Unity, khi chúng được tạo.

Lời khuyên cho người mới bắt đầu - hãy tự tạo cho mình một công cụ diff / merge hợp lý (tôi thích WinMerge ) và làm quen với việc sử dụng nó để xem những thay đổi mà người khác đã thực hiện và để hợp nhất các thay đổi trong các tệp bị xung đột. Thiết lập một không gian tài liệu trung tâm, ví dụ. một tài liệu Google viết hoặc wiki và giữ tài liệu của bạn ở đó - tài liệu nên chứa một danh sách tính năng cơ bản ở mức tối thiểu để bạn biết bạn đang nhắm đến điều gì, và lý tưởng là một danh sách nhiệm vụ xuất phát từ danh sách tính năng, cùng với một dấu hiệu rõ ràng của những người đang làm việc trên nhiệm vụ. Nói chuyện với nhau để có được một ý tưởng sơ bộ về những người cần phải thực hiện nhiệm vụ nào và loại chúng ra khỏi danh sách khi họ hoàn thành. Tiếp tục xem xét lại và đánh giá lại danh sách để xem mọi thứ có còn hợp lệ không và nếu bạn cần làm lại bất kỳ ưu tiên nào.


Cảm ơn bạn! Bạn đã cho tôi lời khuyên tuyệt vời về cả hai vấn đề của tôi.
nosferat

4

Tôi làm việc với một đội tự gọi là Defective Studios. Chúng tôi đã vật lộn với cùng một vấn đề trong nhiều năm, và gần đây cuối cùng tôi đã nhượng bộ và bắt đầu viết một phần mở rộng để giúp tôi hợp nhất các trò chơi.

Về cơ bản, cách tiếp cận là tạo ra một giao diện giống như thanh tra trong một cửa sổ xếp cạnh nhau từng đối tượng trò chơi, thành phần và thuộc tính để so sánh và cung cấp các nút để sao chép giá trị (hoặc toàn bộ đối tượng) từ bên này sang bên khác. Nếu bạn quen thuộc với SerializedPropertylớp học, đó là những gì đang làm phần lớn công việc ở đây. Về cơ bản, chúng tôi tạo ra một GUI đồng bộ hóa trạng thái thoát giữa bên phải và bên trái và tạo không gian dọc bất cứ nơi nào một GameObjecthoặcComponent tồn tại ở bên phải hoặc bên trái. Hàm so sánh kiểm tra sự bằng nhau ở mỗi cấp độ và biến nền của mỗi dòng thành màu đỏ hoặc màu xanh lá cây tùy thuộc vào trạng thái của đẳng thức. Bất kỳ dòng nào có con chứa sự khác biệt cũng sẽ có màu đỏ và chúng tôi cũng bao gồm một nút tiện lợi để tìm kiếm đệ quy cây và mở rộng tất cả các đối tượng khác nhau hoặc có sự khác biệt ở con cái chúng.

Đồng thời, có một tập các trường mặt nạ cho phép bạn lọc các loại thành phần nhất định ra khỏi so sánh. Các thuộc tính GameObject như tên, lớp và thẻ cũng được so sánh. Chúng tôi sử dụng SerializedObjectSerializedPropertylặp qua các gameObjectthuộc tính của chúng và vẽ chúng giống như chúng được vẽ trong thanh tra. Điều này đảm bảo tính nhất quán và dễ dàng hơn rất nhiều để viết mã!

nhập mô tả hình ảnh ở đây

Một chi tiết tiện lợi cuối cùng là quá trình so sánh (được kích hoạt khi các đối tượng được tải và bất cứ khi nào có thay đổi) được chạy trong một coroutine ad-hoc được cập nhật bởi EditorWindow.Update chức năng, do đó, trong trường hợp bạn đang so sánh một đối tượng cực kỳ phức tạp, cửa sổ không khóa trình soạn thảo. Đây là điều bắt buộc khi so sánh các đối tượng với hàng trăm (hoặc nghìn!) Trẻ em. Nói chung, đó là một "dự án lego" như bạn tôi muốn nói, nhưng chắc chắn là một công cụ vô giá ngay lập tức trở thành một phần trong quy trình hợp tác của chúng tôi.

Công cụ, Unity Merge được ghi lại trên wiki Unify, bao gồm lộ trình và địa chỉ email để phản hồi và báo cáo vấn đề. Nếu bạn thực sự vật lộn với một sự hợp nhất phức tạp, hãy thử và cho chúng tôi biết suy nghĩ của bạn! Ngoài ra, tôi không bận tâm xây dựng nó thành một DLL, vì vậy hãy thoải mái chọc vào nguồn. Việc triển khai và SerializedPropertythao tác coroutine ad-hoc , cũng như một vài thủ thuật GUI mà cuối cùng tôi cần là một phần tuyệt vời trong bộ công cụ mở rộng trình chỉnh sửa của bạn. Tôi rất quan tâm đến những thay đổi / cải tiến mà người dùng có thể có, vì vậy hãy liên hệ!


1
Âm thanh như một công cụ hữu ích, cảm ơn vì đã cải thiện câu trả lời "chỉ liên kết" trước đây của bạn.
MichaelHouse

1

Nếu bạn có tiền cho nó, máy chủ Tài sản với phiên bản pro của Unity là khá tốt. Tôi đã sử dụng nó trong một dự án lớn, nhiều người trong quá khứ và nó đã làm được việc. Để kiểm soát phiên bản vanilla, nó đã làm những gì chúng tôi mong đợi nó sẽ làm.

Tôi đã thử sử dụng kho lưu trữ SVN với dự án Unity và nó hơi rắc rối. Chúng tôi cuối cùng đã loại bỏ ý tưởng trước khi làm cho nó hoạt động, tuy nhiên. Unity giữ rất nhiều tệp sao lưu mà tôi không muốn dành thời gian để tìm hiểu điều gì sẽ xảy ra nếu chúng không được đồng bộ hóa với máy chủ. Tôi nghĩ, với một chút tinh tế, điều đó có thể thực hiện được nhưng tôi chưa có kinh nghiệm với nó hoạt động tốt.

Tôi đã thực hiện một dự án nhỏ bằng các tính năng miễn phí của DropBox. Nó làm tôi lo lắng nhưng chúng tôi không bao giờ có bất kỳ vấn đề. Và, tôi không nghĩ rằng cuối cùng chúng tôi cần bất kỳ công cụ kiểm soát phiên bản thực nào cho dự án đó vì vậy tôi không thể nói nhiều về việc hoàn nguyên hoặc hợp nhất các tệp sẽ đi như thế nào.


1

Dropbox hỗ trợ phiên bản cho mỗi tệp (thay vì mỗi cam kết) và chơi độc đáo với Unity. Nó miễn phí ban đầu (2 gigabyte) và khá rẻ sau đó (khoảng 10 đô la cho 50gig). Bạn cần addon PackRat để có quyền truy cập vào lịch sử phiên bản.

Giống như với SVN, CVS, GIT, v.v., bạn sẽ cần đảm bảo rằng bạn tạo các thư mục thẻ khi bạn đến từng giai đoạn chính trong quá trình phát triển (ví dụ: cuối tuần, cuối cột mốc). Không giống như đã nói ở trên, sẽ khó khăn hơn nhiều để trở lại giai đoạn như vậy nếu bạn không, bởi vì bạn sẽ phải hoàn nguyên từng tệp riêng lẻ. Hãy ghi nhớ điều đó trong khi phát triển và bạn sẽ có một khoảng thời gian dễ dàng mà không phải trả tiền cho Máy chủ tài sản.


Điều này thật là đau đớn. Unity phải xây dựng lại cảnh mỗi khi bạn mở nó trên một máy tính khác. Điều này thay đổi thư mục thư viện ở rất nhiều nơi cho mỗi lần xác nhận. Bỏ qua thư mục thư viện sẽ tốt, nhưng sau đó bạn sẽ không có các tệp cảnh được kiểm soát phiên bản. Nhóm của tôi đã từ bỏ và mua một loạt các giấy phép chuyên nghiệp và máy chủ tài sản đã sử dụng.
Brandon

@brandon Đoán nó phụ thuộc vào quy mô dự án.
Kỹ sư

1
Chắc chắn, nếu đó là một vài nhà phát triển với ngân sách hạn hẹp, tôi sẽ đề xuất cách tiếp cận của bạn vì đây thực sự là cách duy nhất
brandon

Nhưng bạn đã bao giờ làm việc trong một dự án dưới 2 gb chưa? những gì về các mô hình và kết cấu bạn sẽ bao gồm. Hãy xem bitbucket.com và bắt đầu học git!
XandruCea

Chắc chắn rồi. Các dự án Android / iOS chắc chắn vẫn ở dưới kích thước đó theo kinh nghiệm của tôi (trong năm tôi đã viết câu trả lời này). Ngoài ra, bạn có thể kiếm thêm dung lượng trên Dropbox bằng cách mời bạn bè.
Kỹ sư
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.