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 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?
Câu trả lời:
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.
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
.gitingore
tô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).
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.
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.
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 SerializedProperty
lớ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 GameObject
hoặ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 SerializedObject
và SerializedProperty
lặp qua các gameObject
thuộ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ã!
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à SerializedProperty
thao 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ệ!
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.
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.