আমি মূলত আমার নিজের প্রিফ্যাব সিস্টেমটি তৈরি করছি। গেম অবজেক্টগুলি একটি মানব পাঠযোগ্য ডেটা ফাইল দ্বারা সংজ্ঞায়িত করা হয়। আমি একটি খালি গেমওজেক্ট তৈরি করতে চাইছি, এটি ডেটা ফাইলে সংজ্ঞায়িত উপাদানগুলি দিয়ে লোড করুন এবং এটি প্রস্তুত এবং Instantiate()
কলটির জন্য অপেক্ষা করতে চাই। যাইহোক, আমি যখনই GameObject go = new GameObject()
একটি নতুন গেম অবজেক্ট ব্যবহার করি তখন দৃশ্যে যোগ করা হয়।
প্রিফাবগুলিতে নির্মিত ইউনিটি ব্যবহার করে, আমি গেমস অবজেক্ট হিসাবে প্রিফাবটি লোড করতে পারি এবং এটি দৃশ্যে যুক্ত হয় না। (নীচে উদাহরণ দেখুন)
এর পিছনে যুক্তি হ'ল আমি এমন একটি তালিকা রাখতে চাই যাতে গেমওবজেক্টস রয়েছে, কিছু আমার customক্য প্রিফাবগুলি লোড করে এবং অন্যটি আমার কাস্টম প্রিফ্যাব সিস্টেম দ্বারা নির্মিত অন্যকে উত্পন্ন করে। এটি রান সময়ে ঘটতে হবে, এবং ইউনিটি সম্পাদককে জড়িত করতে পারে না (যেহেতু আদর্শ ব্যবহারকারীরা তাদের নিজস্ব ডেটা ফাইলগুলি সংজ্ঞায়িত করতে সক্ষম হবেন)।
ইউনিটি আমার জন্য স্বয়ংক্রিয়ভাবে এটি ইনস্ট্যান্ট না করে আমি কীভাবে একটি নতুন গেমওজেক্ট তৈরি করতে পারি?
উদাহরণস্বরূপ, আমি এই জাতীয় কল করতে পারি:
Resources.LoadAll("PrefabsDirectory", typeof(GameObject))
এবং আমি গেমঅবজেক্টগুলির একটি তালিকা পেয়ে যাব, কল করার পরে সেগুলির কোনওই দৃশ্যে যুক্ত হবে না। মূলত, আমি LoadAll
নিজের প্রিফ্যাবগুলির জন্য একটি পদ্ধতি তৈরি করছি এবং অনুরূপভাবে, কল করার পরে আমি গেম অবজেক্টগুলি ইনস্ট্যান্ট করতে চাই না।
Destroy
গেমওজেক্টটিতে কল করা। যা এটিকে দৃশ্য থেকে সরিয়ে এটিকে মুক্তি দেয়, এটি অকেজো করে তোলে।
go.SetActive(false)
হ'ল একটি অবজেক্ট পুলের মতো কিছু তৈরি করার সেরা উপায়। এটি আপনি যা চান ঠিক তা নয়, তবে আপনার অ্যাক্টিভ অবজেক্টগুলির একটি ছোট গ্রুপ থাকতে পারে যা পরে আপনার কাস্টম ইনস্ট্যান্টেশনের জন্য ক্লোন করা হয়েছিল।