ParrelSync là công cụ quản lý nhân bản dự án dành riêng cho Unity3D, giúp lập trình viên kiểm tra chức năng nhiều người chơi mà không cần build dự án. Bằng cách tạo các liên kết nhân bản (linked clone), bạn có thể chạy đồng thời nhiều phiên bản Unity Editor để dễ dàng kiểm tra logic tương tác trong các kịch bản multiplayer.
🚀 ParrelSync là gì?
Chức năng cốt lõi của ParrelSync là tạo "liên kết nhân bản" (linked clone) từ dự án Unity. Các bản nhân bản này dùng symlinks (liên kết tượng trưng) để chia sẻ thư mục Assets và ProjectSettings với dự án gốc, đồng thời giữ các thư mục Library và Packages riêng biệt. Thiết kế này tiết kiệm dung lượng ổ đĩa và đảm bảo mỗi phiên bản nhân bản có môi trường biên dịch độc lập.

🔑 Phân tích chức năng cốt lõi
1. Tạo dự án nhân bản
Sử dụng phương thức ClonesManager.CreateCloneFromCurrent() để nhanh chóng tạo bản nhân bản từ dự án hiện tại. Hệ thống tự động thêm hậu tố _clone_số vào đường dẫn dự án gốc, ví dụ: MyProject_clone_0.
// Logic tạo chính nằm tại
// ParrelSync/Editor/ClonesManager.cs
public static Project CreateCloneFromCurrent()
{
if (IsClone())
{
Debug.LogError("Dự án này đã là bản nhân bản. Không thể nhân bản thêm.");
return null;
}
// ... logic tạo bản nhân bản
}
ParrelSync tự động xử lý:
- Tạo cấu trúc thư mục dự án
- Sao chép thư mục
LibraryvàPackages - Tạo symlinks cho
AssetsvàProjectSettings - Tạo file nhận dạng
.clonevà file tham số.parrelsyncarg
2. Quản lý dự án nhân bản
ClonesManager cung cấp toàn bộ vòng đời quản lý dự án nhân bản:
- Mở bản nhân bản:
OpenProject(string projectPath) - Xóa bản nhân bản:
DeleteClone(string cloneProjectPath) - Kiểm tra trạng thái nhân bản:
IsClone() - Lấy tham số nhân bản:
GetArgument()

3. Hỗ trợ đa nền tảng
ParrelSync hỗ trợ đầy đủ Windows, macOS và Linux. Cơ chế symlinks khác nhau đảm bảo tương thích chéo:
- Windows: Sử dụng
mklink /Jđể tạo junction thư mục - macOS/Linux: Sử dụng
ln -sđể tạo symlinks
Code triển khai nằm trong phương thức LinkFolders:
// ParrelSync/Editor/ClonesManager.cs
public static void LinkFolders(string sourcePath, string destinationPath)
{
switch (Application.platform)
{
case (RuntimePlatform.WindowsEditor):
CreateLinkWin(sourcePath, destinationPath);
break;
case (RuntimePlatform.OSXEditor):
CreateLinkMac(sourcePath, destinationPath);
break;
case (RuntimePlatform.LinuxEditor):
CreateLinkLinux(sourcePath, destinationPath);
break;
}
}
💡 Mẹo sử dụng và thực hành tốt nhất
Cấu hình tham số nhân bản
Mỗi bản nhân bản có thể đặt tham số riêng qua file .parrelsyncarg, mặc định là "client". Trong code, sử dụng ClonesManager.GetArgument() để đọc tham số và điều chỉnh logic cho từng phiên bản:
if (ClonesManager.IsClone())
{
string role = ClonesManager.GetArgument();
if (role == "server")
{
// Khởi chạy logic server
}
else if (role == "client")
{
// Khởi chạy logic client
}
}
Hạn chế và lưu ý
- Số lượng bản nhân bản tối đa là 10 (có thể thay đổi qua
MaxCloneProjectCount) - Không thể tạo nhân bản từ một bản nhân bản
- Đảm bảo đóng phiên bản nhân bản trước khi xóa
- Không nên sửa đổi
Assetstrong bản nhân bản (sẽ ảnh hưởng đến dự án gốc)
📦 Cài đặt và thiết lập
- Clone ParrelSync từ kho:
git clone https://gitcode.com/gh_mirrors/pa/ParrelSync
- Sao chép thư mục ParrelSync vào
Assets/trong dự án Unity - Khởi động lại Unity, vào menu
ParrelSync→Clones Managerđể mở cửa sổ quản lý
🎯 Kịch bản ứng dụng
ParrelSync đặc biệt phù hợp cho:
- Kiểm tra game nhiều người chơi cục bộ
- Gỡ lỗi kiến trúc client-server
- Xác thực logic tương tác nhiều vai trò
- Kiểm tra nhanh các thiết lập độ phân giải và đồ họa khác nhau