প্রকল্প সম্পর্কে

Particle Effect For UGUI (UI Particle নামেও পরিচিত) হলো mob-sakai-এর একটি ইউনিটি প্যাকেজ যা ParticleSystem ইফেক্টকে ইউনিটি UI (uGUI) হায়ারার্কির অংশ হিসেবে রেন্ডার করতে দেয়। এটি UI মাস্কের ভেতরে পার্টিকেল ইফেক্ট প্রদর্শন এবং অন্যান্য UI উপাদানের সাথে সঠিকভাবে সাজানোর দীর্ঘস্থায়ী সমস্যা সমাধানের জন্য তৈরি করা হয়েছে। প্যাকেজটি ইউনিটি ২০১৮.২-এর পর থেকে উপলব্ধ `MeshBake` এবং `MeshTrailBake` API ব্যবহার করে পার্টিকেল ডেটাকে মেশ জ্যামিতিতে রূপান্তর করে, যা CanvasRenderer সরাসরি প্রদর্শন করতে পারে। এতে আলাদা ক্যামেরা, RenderTexture বা অতিরিক্ত Canvas-এর প্রয়োজন হয় না—যেগুলো প্রায়ই পারফরম্যান্স ওভারহেড এবং ভিজ্যুয়াল আর্টিফ্যাক্ট সৃষ্টি করত। মূল বৈশিষ্ট্যগুলো: - **মাস্ক সাপোর্ট**: সামঞ্জস্যপূর্ণ শেডারের সাথে `Mask` এবং `RectMask2D` উভয় কম্পোনেন্টেই কাজ করে। - **সর্টযোগ্য**: পার্টিকেল অন্যান্য UI উপাদানের সাথে সিবলিং ইনডেক্স অর্ডার অনুসরণ করে। - **ট্রেইল মডিউল সাপোর্ট**: ParticleSystem Trail মডিউলের সাথে সম্পূর্ণ সামঞ্জস্য। - **CanvasGroup আলফা**: CanvasGroup স্বচ্ছতা সেটিংসের সাথে একীভূত হয়। - **কোনো অ্যালোকেশন নেই**: প্রতি ফ্রেমে গার্বেজ কালেকশন ওভারহেড এড়াতে ডিজাইন করা। - **যেকোনো ক্যানভাস রেন্ডার মোড**: Overlay, World Space এবং Camera Space রেন্ডার মোডের সাথে সামঞ্জস্যপূর্ণ। - **রেন্ডার পাইপলাইন সাপোর্ট**: বিল্ট-ইন, Universal Render Pipeline (URP) এবং High Definition Render Pipeline (HDRP)-এ কাজ করে। - **মেশ শেয়ারিং**: একাধিক অভিন্ন ইফেক্ট সিমুলেশন ফলাফল ভাগ করে নিতে পারে, যা অনেক অনুরূপ পার্টিকেল প্রদর্শনে পারফরম্যান্স খরচ উল্লেখযোগ্যভাবে কমায়। - **অ্যাডাপটিভ স্কেলিং**: স্ক্রিন রেজোলিউশনের কারণে Canvas স্কেল পরিবর্তিত হলে স্বয়ংক্রিয় স্কেল সমন্বয়। - **ইমিশন পজিশন মোড**: পরম (ওয়ার্ল্ড স্পেস) বা আপেক্ষিক (লোকাল স্কেলড) ইমিশন পজিশন বেছে নেওয়ার সুবিধা। - **UIParticleAttractor**: একটি কম্পোনেন্ট যা পার্টিকেলকে লক্ষ্যবস্তুর দিকে টানে, কনফিগারযোগ্য মুভমেন্ট টাইপ এবং কার্ভ সহ। - **ParticleSystemPreviewer**: সিন ভিউতে পার্টিকেল ইফেক্ট প্রিভিউ করার জন্য শুধুমাত্র এডিটর-কম্পোনেন্ট। প্যাকেজটি তিনটি প্রধান কম্পোনেন্ট সরবরাহ করে: ১. **UIParticle** — মূল কম্পোনেন্ট। এটি এমন একটি GameObject-এ সংযুক্ত করুন যাতে ParticleSystem আছে বা থাকবে। এটি পার্টিকেলকে uGUI পাইপলাইনে বেকিং এবং রেন্ডারিং পরিচালনা করে। AnimationClip-এর মাধ্যমে ম্যাটেরিয়াল প্রপার্টি অ্যানিমেশন, একাধিক ম্যাটেরিয়াল এবং টাইম স্কেল মাল্টিপ্লায়ার সাপোর্ট করে। ২. **UIParticleAttractor** — একটি ঐচ্ছিক কম্পোনেন্ট যা নির্দিষ্ট ParticleSystem থেকে পার্টিকেলকে একটি গন্তব্য বিন্দুর দিকে আকর্ষণ করে, কনফিগারযোগ্য গতি, মুভমেন্ট টাইপ (লিনিয়ার, স্মুথ বা স্ফিয়ার) এবং সম্পূর্ণ হওয়ার ইভেন্ট সহ। ৩. **ParticleSystemPreviewer** — শুধুমাত্র এডিটর-সহায়ক যা সিন ভিউতে GameObject নির্বাচিত হলে প্রিভিউয়ের জন্য একটি অস্থায়ী ParticleSystem তৈরি করে। বিল্ডে অন্তর্ভুক্ত হয় না। ইনস্টলেশন OpenUPM (`openupm add com.coffee.ui-particle`), git URL থেকে UPM, অথবা এমবেডেড প্যাকেজ হিসেবে সমর্থিত। প্যাকেজটির জন্য ইউনিটি ২০১৮.৩ বা তার পরের সংস্করণ প্রয়োজন। শেডার সীমাবদ্ধতা: প্যাকেজটি `UI/Default` ছাড়া বেশিরভাগ বিল্ট-ইন শেডার সাপোর্ট করে না। কাস্টম শেডারে মাস্কিংয়ের জন্য স্টেনসিল সাপোর্ট থাকতে হবে, এবং ইউনিটি ২০১৮–২০১৯-এ UV zw কম্পোনেন্ট বাতিল হয়ে যায়, যা কিছু শেডারকে প্রভাবিত করতে পারে। প্রস্তাবিত পদ্ধতি হলো বিল্ট-ইন `UI/Additive` বা `UI/Default` শেডার ব্যবহার করা, অথবা ডকুমেন্টেশনে দেওয়া স্টেনসিল-ভিত্তিক টেমপ্লেট অনুসরণ করে কাস্টম শেডার তৈরি করা। পারফরম্যান্সের জন্য, একই ইফেক্টের অনেক কপি প্রদর্শনে Mesh Sharing ফিচারটি ব্যাপকভাবে উপকারী, যা সিমুলেশন ডিডুপ্লিকেট করে এবং ড্র কল কমায়। মেশ শেয়ারিং ছাড়া, UIParticle UI স্পেসে কাঁচা ParticleSystem-এর তুলনায় কম অবজেক্ট ব্যবহার করে, তবে UI-র বাইরে ব্যবহৃত স্ট্যান্ডার্ড ParticleSystem-এর চেয়ে বেশি ব্যয়বহুল।