আমি ইউনিটিতে সিঙ্গলটন অবজেক্ট তৈরির জন্য বেশ কয়েকটি ভিডিও এবং টিউটোরিয়াল দেখেছি, মূলত এটির জন্য GameManager
, যেগুলি সিঙ্গলটন ইনস্ট্যান্টেশন এবং বৈধকরণের জন্য বিভিন্ন পদ্ধতির ব্যবহার করে বলে মনে হচ্ছে।
এখানে কি কোনও সঠিক, বা বরং পছন্দসই পদ্ধতির রয়েছে?
আমি দুটি প্রধান উদাহরণের মুখোমুখি হ'ল:
প্রথম
public class GameManager
{
private static GameManager _instance;
public static GameManager Instance
{
get
{
if(_instance == null)
{
_instance = GameObject.FindObjectOfType<GameManager>();
}
return _instance;
}
}
void Awake()
{
DontDestroyOnLoad(gameObject);
}
}
দ্বিতীয়
public class GameManager
{
private static GameManager _instance;
public static GameManager Instance
{
get
{
if(_instance == null)
{
instance = new GameObject("Game Manager");
instance.AddComponent<GameManager>();
}
return _instance;
}
}
void Awake()
{
_instance = this;
}
}
আমি দুজনের মধ্যে যে প্রধান পার্থক্যটি দেখতে পাচ্ছি তা হ'ল:
প্রথম পদ্ধতির গেম অবজেক্ট স্ট্যাক নেভিগেট করার চেষ্টা করবে এর উদাহরণ খুঁজে বার করতে GameManager
যার যদিও এটি কেবল ঘটে (বা কেবল হওয়া উচিত) একবার দেখে মনে হচ্ছে এটি বিকাশের সময় দৃশ্যের আকারে বেড়ে যাওয়ার কারণে এটি খুব অযৌক্তিক হতে পারে।
এছাড়াও, অ্যাপ্লিকেশনটির দৃশ্যের পরিবর্তন হওয়ার পরে প্রথম পদ্ধতির অবজেক্টটি মুছে ফেলা না হওয়ার চিহ্ন চিহ্নিত করে, যা নিশ্চিত করে যে বস্তুর দৃশ্যের মধ্যে অবিচল থাকে। দ্বিতীয় পদ্ধতির এটি মেনে চলার জন্য উপস্থিত হয় না।
দ্বিতীয় পদ্ধতির ক্ষেত্রে যেমনটি নজরে আসে না তেমনই অদ্ভুত বলে মনে হয়, এটি একটি নতুন গেমবজেক্ট তৈরি করবে এবং এতে একটি গেমমঞ্জার উপাদান নির্ধারণ করবে। যাইহোক, এই গেমম্যানেজার উপাদানটি দৃশ্যের কোনও বস্তুর সাথে ইতিমধ্যে সংযুক্ত থাকা ছাড়া এটি চলতে পারে না, সুতরাং এটি আমার কিছুটা বিভ্রান্তির কারণ করছে।
সুপারিশ করা হবে যে অন্য কোন পদ্ধতির, বা উপরের দুটি একটি সংকর আছে? সিলেটলেট সম্পর্কিত প্রচুর ভিডিও এবং টিউটোরিয়াল রয়েছে তবে এগুলির মধ্যে এতটাই পার্থক্য রয়েছে যে দুজনের মধ্যে যে কোনও তুলনা আঁকানো শক্ত এবং সুতরাং কোনটি সেরা / পছন্দের পদ্ধতির একটি সিদ্ধান্তে উপসংহারে আসে।
GameManager
উচিত তা নয়, বরং কীভাবে সেখানে কেবলমাত্র একমাত্র উদাহরণ রয়েছে এবং তা কার্যকর করার সর্বোত্তম উপায় কী তা নিশ্চিত করা যায়।