สมมุติว่าถ้าหากเราอยากสร้างเกมแล้วมี การ Save และ Load เพื่อระบุว่าการเล่นเกมของเรานั้นถึงจุดไหน คล้ายๆ Check Point ของแต่ละด่าน XNA Framework นั้นมีชุดคลาสตัวนึง นั่นคือ Namespace ที่มีชื่อว่า Microsoft.Xna.Framework.Storage ใช้ในการอ่าน และ เขียนไฟล์ที่เก็บข้อมูลผู้ใช้งานผู้เล่นเกม การทำงานของ คลาสของระบบ จัดเก็บทุกสิ่งในระบบตั้งแต่ชื่อผู้เล่น, เลขเครื่อง Xbox, บันทึกไปถึง Player ของคลาสตัวละคร
สิ่งที่ Storage จะกระทำคือ
- Storage Devices
- Storage Locations
เมื่อคุณเขียนโปรแกรม Game โดย XNA Framework โดยทั่วไปเวลาคอมไพล์แล้ว ระบบจะอ่านไฟล์ จากสองที่และทำการเก้บข้อมูล สองอย่างคือ
1. เก็บชื่อของระบบที่ถูกประมวลผล ปฏิบัติการ (Operation) โดยจะเก็บรายละเอียดทั่วๆไปของ Resource ได้แก่พวก shaders, meshes, textures, และ อื่น ๆ
2. เก็บข้อมูลผู้ใช้ที่เล่นเกม
ทั้งสองที่ นี้จะถูกเก็บเข้าสู่ XNA Framework ในชั้น Layer ของ Storage Container โดยระบบ Resource ผ่าน TitleLocation ที่มีเส้นทางระบุการเข้าถึง resource
ไปยังตำแหน่งของชื่อ คลาส ชื่อ Object และ ชื่อแฟ้มข้อมูลที่ สนับสนุน เพื่อใช้ในการเรียกโหลด ในรูปแบบการกู้คืน
StorageContainer จะทำการเข้าถึงอุปกรณ์ Device และ ระบบผ่าน OpenContainer ซึ่งเป็นคำสั่งในการเข้าถึงระบบผ่าน System.IO และจะทำการคัดลอก หรือ ลบไฟล์ Save Load
ก็สามารถใช้ StorageContainer.Path ในการชี้และนำทางไปให้ถึง resource ในเวลาอันสั้น
คำสั่งเบื้องต้นในการ Save Game คือต้องสร้างไฟล์หนึ่งขึ้นมา
Creating a File เพื่อส้างไฟล์บันทึกเกม และจัดเก็บในไฟล์นี้
ทำการ Call โดยวิธี Guide.BeginShowStorageDeviceSelector method ทำการับ Index ของอุปกรณ์ที่เครื่องผู้ใช้
เปิด StorageContainer บนเครื่องอุปกรณ์ แล้วส่งค่าชื่อของคุณ(ผู้ใช้, ID, User ผู้ใช้)
private static void DoCreate(StorageDevice device)
{
// Open a storage container.
StorageContainer container =
device.OpenContainer("StorageDemo");
// Add the container path to our file name.
string filename = Path.Combine(container.Path, "demobinary.sav");
// Create a new file.
if (!File.Exists(filename))
{
FileStream file = File.Create(filename);
file.Close();
}
// Dispose the container, to commit the data.
container.Dispose();
}
เท่านี้ครับก็เป็นอันเสร็จในการสร้างไฟล์
ตอนต่อไปเป็นการเรียก Load ไฟล์นะครับ