উত্তর:
আমি সাধারণত মেমরির স্ন্যাপশটের বিচারে ভাবি না, বরং আমি কেবল একটি তালিকা তৈরি করি যা সেশনগুলির মধ্যে কোন মানগুলি সংরক্ষণ করতে হবে এবং সেই মানগুলিকে একটি বাহ্যিক ফাইলে সংরক্ষণ করতে হবে।
এটি অবশ্যই আপনার নির্দিষ্ট গেমের প্রয়োজনের উপর নির্ভর করে, তবে সাধারণত আমি কেবলমাত্র বর্তমান স্তরের অবস্থা (যেমন সমস্ত শত্রু যেখানে রয়েছে, তাদের স্বাস্থ্য কী ইত্যাদি) সংরক্ষণ করে এবং তারপরে প্লেয়ারকে কী স্তরের স্তরের মতো উচ্চ স্তরের স্টাফ দেয় ইতিমধ্যে সম্পন্ন হয়েছে।
এই উত্তরটি ইউনিটি 3 ডি নির্দিষ্ট ।
ইউনিটিতে, বেশিরভাগ ক্লাস সিরিয়ালাইজযোগ্য, এর অর্থ আপনি সম্পূর্ণ ইউনিটি অবজেক্টগুলিকে ডিস্কে স্ট্রিম করতে সক্ষম। ফলউইং ইউনিটিস্ক্রিপ্ট-কোড কোনও বিষয়কে সিরিয়ালাইজ করার একটি উপায়, এটি আবার একটি ডিস্কে এটি সংরক্ষণ করুন (লোড করার পরে আপনাকে অবশ্যই বস্তুটি নিক্ষেপ করতে হবে):
import System;
import System.IO;
import System.IO.Stream;
import System.Runtime.Serialization;
import System.Runtime.Serialization.Formatters.Binary;
class SaveLoad {
public static function SaveFile(filename:String, obj:Object):void {
try {
Debug.Log("Writing Stream to Disk.", SaveLoad);
var fileStream:Stream = File.Open(filename, FileMode.Create);
var formatter:BinaryFormatter = new BinaryFormatter();
formatter.Serialize(fileStream, obj);
fileStream.Close();
} catch(e:Exception) {
Debug.LogWarning("Save.SaveFile(): Failed to serialize object to a file " + filename + " (Reason: " + e.ToString() + ")");
}
}
public static function LoadFile(filename:String):Object {
try {
Debug.Log("Reading Stream from Disk.", SaveLoad);
var fileStream:Stream = File.Open(filename, FileMode.Open, FileAccess.Read);
var formatter:BinaryFormatter = new BinaryFormatter();
var obj:Object= formatter.Deserialize(fileStream);
fileStream.Close();
return obj;
} catch(e:Exception) {
Debug.LogWarning("SaveLoad.LoadFile(): Failed to deserialize a file " + filename + " (Reason: " + e.ToString() + ")");
return null;
}
}
}
একটি টিডির জন্য আমি সম্ভবত তরঙ্গগুলির মধ্যে একচেটিয়াভাবে সংরক্ষণ করতাম। এইভাবে আপনাকে সমস্ত টাওয়ারগুলি সম্পর্কে ভাবতে হবে। স্তরগুলিতে কিছু স্বয়ংক্রিয় সেভ পয়েন্ট রাখুন, এর মধ্যে 10 মিনিটের বেশি নয়, তবে সম্ভবত কম ভাল।
অবশ্যই যদি আপনার স্তরগুলি পর্যাপ্ত হয় তবে আপনি প্রচারাভিযানের স্থিতি ব্যতীত আর কিছুই বাঁচাতে পারবেন না।
আমি যখন গেমের বর্তমান অবস্থা উল্লেখ করি তখন আমি সংরক্ষণের মুহুর্তে মেমরির স্ন্যাপশটটিকে উল্লেখ করছি। আপনি যে ডেটা আপনার উপর সংরক্ষণ করতে যাচ্ছেন তা থেকে আপনাকে এইচডিডি পুনরায় তৈরি করতে সক্ষম হতে হবে।
অবিচ্ছিন্নভাবে মেমরি ডাম্প সঞ্চালন করে এইচডিডি এ ফেলে দিতে হবে এমন ডেটা রয়েছে এমন আপনার সমস্ত শ্রেণীর সিরিয়ালাইজ করা সহজ। এটির সাথে সমস্যা হ'ল আপনার ক্লাসে পরিবর্তনগুলি ক্রমীকৃত মানগুলির সংখ্যা / ধরণের পরিবর্তন করে এবং পুরানো সংরক্ষণগুলি ভেঙে দেয়। এছাড়াও আপনি সমস্ত কিছু সংরক্ষণ করছেন বলে এটি লোডের সময়কে বাড়িয়ে তোলে। স্বতন্ত্র ক্ষেত্রগুলি চিহ্নিত করার জন্য এটি আরও দক্ষ যা আপনার সিরিয়ালাইজার / আইডিই ব্যবহার করে যে কোনও বৈশিষ্ট্য সিস্টেমের সাথে বর্তমান "মেমরি স্ন্যাপশট" পুনর্নির্মাণের জন্য প্রয়োজনীয়। তারপরে সেই সংরক্ষিত ডেটা থেকে "মেমরি স্ন্যাপশট" পুনর্নির্মাণ করুন।
এছাড়াও আমি ইউনিটি এর আগে কখনও ব্যবহার করি নি যাতে এতে অন্তর্নির্মিত কিছু থাকতে পারে However তবে এটি সাধারণ পদ্ধতির।