হুঁশিয়ার:
এই উত্তরটি পুরানো। ইউনিটি এখন পয়েন্ট লাইট কণাকে দেশীয়ভাবে সমর্থন করে। সম্পূর্ণ বিবরণের জন্য দয়া করে এই উত্তরটি দেখুন।
কৌতুহলী কারও জন্য, বা ইউনিটির পুরানো সংস্করণগুলি ব্যবহার করার জন্য, বা দেশীয় পদ্ধতির অফারগুলির চেয়ে ম্যানুয়াল নিয়ন্ত্রণের প্রয়োজনের জন্য আমি এই পোস্টটি এখানে রেখে দেব - কেবলমাত্র নোট করুন যে নীচের উপস্থাপিত পদ্ধতির চেয়ে নেটিভ সমর্থনটি আরও বেশি দক্ষ এবং স্কেলযোগ্য হতে পারে।
আমি নিশ্চিত নই কেন এত উত্তর দাবি করে যে এটি কঠিন বা অসম্ভব। কয়েক ডজন ডায়নামিক পয়েন্ট লাইট হ্যান্ডেল করা পিসিতে চলমান একটি আধুনিক মুলতুবি রেন্ডারিং পাইপলাইনের জন্য প্রচলিত ।
আমি রান্না করা একটি দ্রুত উদাহরণ এখানে:
আমি এই স্ক্রিপ্টটি আমার সর্বাধিক কণাগুলির জন্য যথেষ্ট পরিমাণে আলো জ্বালানোর জন্য ব্যবহার করি (এটি নিশ্চিত করুন যে আপনি আপনার পার্টিকাল সিস্টেম সেটিংস সমন্বিত করেছেন যাতে সর্বোচ্চটি যুক্তিসঙ্গত হয় - 1000 এর ডিফল্টটি আপনার গ্রাফিক্স কার্ডটিকে খুব খুশি করবে না) এবং তারপরে সক্রিয়টিকে অনুসরণ করতে আপডেট করুন কণা:
[RequireComponent(typeof(ParticleSystem))]
public class ParticleLights : MonoBehaviour {
public Light lightPrefab;
ParticleSystem _system;
ParticleSystem.Particle[] _particles;
Light[] _lights;
void Start () {
_system = GetComponent<ParticleSystem>();
_particles = new ParticleSystem.Particle[_system.maxParticles];
_lights = new Light[_system.maxParticles];
for(int i = 0; i < _lights.Length; i++)
{
_lights[i] = (Light)Instantiate(lightPrefab);
_lights[i].transform.parent = transform;
}
}
void Update () {
int count = _system.GetParticles(_particles);
for(int i = 0; i < count; i++)
{
_lights[i].gameObject.SetActive(true);
_lights[i].transform.localPosition = _particles[i].position;
// Looks like the GetCurrentColor function was added in 5.3.
// You can use other methods in earlier Unity versions.
_lights[i].color = _particles[i].GetCurrentColor(_system);
}
for (int i = count; i < _particles.Length; i++)
{
_lights[i].gameObject.SetActive(false);
}
}
}
সম্পাদনা করুন: আপনি প্রথমে গেম অবজেক্ট তৈরি করে একটি প্রিফ্যাব তৈরি করতে পারেন (এই ক্ষেত্রে, তৈরি করুন -> হালকা -> পয়েন্ট লাইট), আপনার পছন্দসই নাম / প্যারামিটার / স্ক্রিপ্ট / বাচ্চাদের সাথে সেট আপ করে তারপরে আপনার হায়ারার্কি থেকে টেনে আনুন আপনার প্রকল্প এক্সপ্লোরার। এটি বস্তুকে সম্পদ হিসাবে সংরক্ষণ করে আপনি একাধিক দৃশ্য এবং স্ক্রিপ্টে উত্তরাধিকারের এক ডিগ্রি সহ পুনরায় ব্যবহার করতে পারেন। আপনি আপনার দৃশ্যে অনুলিপিটি মুছতে পারেন এবং প্রয়োজনীয়তার সময় সম্পদটি আপনার সম্পদ ফোল্ডারে রেফারেন্স করার জন্য থাকবে।
আপনার দৃশ্যে যা কিছু চলছে তার জন্য আপনাকে সবচেয়ে বেশি পারফরম্যান্সের হেডরুম দেওয়ার জন্য লাইটপ্রেফাবের তুলনামূলকভাবে ছোট পরিসীমা রয়েছে এবং শ্যাডকাস্টিং নয় তা নিশ্চিত করুন। আপনাকে লাইটপ্রেফাবকে নিজেই সবুজ করতে হবে না (বা আপনার ফায়ারফ্লাইসের রঙ) - এটি এটি কণার রঙ থেকে বেছে নেবে।
আপনি হয়ত দেখতে পেলেন যে আপনি যদি বিলবোর্ড কোয়াড এবং একটি কাস্টম মুভমেন্ট / ব্লিঙ্কিগ স্ক্রিপ্টের সাথে সংযুক্ত একটি হালকা দিয়ে প্রত্যেককে নিজস্ব গেমবজেক্ট তৈরি করেন তবে ফায়ারফ্লাইসের ফ্লাইটের উপর আপনার আরও ভাল নিয়ন্ত্রণ রয়েছে কারণ যেহেতু দৃinc়প্রত্যয়ী ঘোরাঘুরির চেয়ে আরও বেশি কণা সিস্টেম শৈল্পিকতা লাগে আমি জানি. ;)