Trò chơi XNA 4 cho cả hai hồ sơ


7

Tôi đang viết trò chơi trong XNA 4 và phiên bản này có hai hồ sơ hi-def và Reach. Vấn đề của tôi là tôi cần phải có mã trò chơi của mình cho mỗi hồ sơ này và rất khó chịu khi có hai dự án và thực hiện tất cả các thay đổi trong cả hai hồ sơ. Ý tưởng của tôi là sử dụng chỉ thị tiền xử lý (tôi không chắc về tên của nó, http://msdn.microsoft.com/en-us/l Library / ed8yd1ha% 28v = vs.71% 29.aspx ) và sử dụng câu lệnh IF tại những nơi có vấn đề với hồ sơ. Chỉ có vấn đề là chương trình cần được biên dịch hai lần (đối với mỗi hồ sơ) và thay đổi thủ công cài đặt chỉ thị và dự án sang cấu hình khác. Và câu hỏi của tôi là: Đó có phải là cách tốt? Có cách nào tốt hơn và sạch hơn để làm điều này?


Chỉ để ghi lại: đây là sự khác biệt giữa Reach & HiDef theo Shawn Hargreaves.
doppelgreener

Chỉ cần cô lập mã xem của bạn và sử dụng một số loại mẫu thiết kế như chiến lược hoặc nhà máy để tạo các đối tượng tùy thuộc vào việc nó có đạt được so với ẩn không. Phần còn lại của mã của bạn nên giống nhau.
tro999

Câu trả lời:


5

Tôi đã làm việc này, nhưng bạn cần sử dụng một số phép thuật MSBuild để làm điều đó. Tôi thực sự khuyên bạn nên sao lưu dự án của mình, vì bạn có thể dễ dàng phá vỡ thứ gì đó nếu bạn làm sai.

Trước tiên, bạn cần mở trình quản lý cấu hình ( ALT + B + O).

Sau đó, bạn cần tạo bốn cấu hình xây dựng cho dự án trò chơi của bạn. Tôi đã chọn để đặt tên cho tôi DebugReach, ReleaseReach, DebugHiDefReleaseHiDef.

Sau khi làm điều này, bạn lưu dự án của bạn, nhấp chuột phải vào dự án trong trình khám phá giải pháp và sau đó nhấn Unload Project. Bây giờ, bạn bấm chuột phải vào dự án một lần nữa và nhấn Edit <projectname>.csproj. Đây là cấu hình MSBuild thô của dự án của bạn.

Trong PropertyGroupnút đầu tiên , bạn cần tìm nút con XnaProfileann sau đó xóa dòng. Tiếp theo bạn cần tìm các PropertyGroupnút trông như thế này:

  • <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugReach|x86' ">
  • <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseReach|x86' ">
  • <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'DebugHiDef|x86'">
  • <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ReleaseHiDef|x86'">

Vào DebugReachReleaseReachbạn thêm nút sau:

  • <XnaProfile>Reach</XnaProfile>

Vào DebugHiDefReleaseHiDefbạn thêm nút sau:

  • <XnaProfile>HiDef</XnaProfile>

Sau đó, bạn lưu tệp, đóng tệp, sau đó nhấp chuột phải vào dự án và nhấp tải lại. Bây giờ tùy thuộc vào cấu hình bản dựng bạn sử dụng, bạn sẽ sử dụng Gỡ lỗi hoặc HiDef. Xin lưu ý rằng việc mở ra Properties không phản ánh sự khác biệt, nhưng bạn có thể kiểm tra nó khi bạn xây dựng.

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.