Heads-Up:
คำตอบนี้ล้าสมัยแล้ว ตอนนี้ความสามัคคีรองรับอนุภาคแสงจุดกำเนิด โปรดดูคำตอบนี้สำหรับรายละเอียดทั้งหมด
ฉันจะปล่อยให้โพสต์ที่นี่สำหรับผู้ที่อยากรู้อยากเห็นหรือใช้ Unity รุ่นเก่าหรือต้องการการควบคุมด้วยตนเองมากกว่าวิธีที่เสนอให้ - โปรดทราบว่าการสนับสนุนดั้งเดิมน่าจะมีประสิทธิภาพและปรับขนาดได้มากกว่าวิธีที่เสนอด้านล่าง
ฉันไม่แน่ใจว่าทำไมคำตอบมากมายอ้างว่าเป็นเรื่องยากหรือเป็นไปไม่ได้ การจัดการไฟจุดแบบไดนามิกไม่กี่โหลนั้นถือเป็นเรื่องปกติสำหรับไปป์ไลน์เรนเดอร์สมัยใหม่ที่ทำงานบนพีซี
นี่เป็นตัวอย่างสั้น ๆ ที่ฉันทำขึ้น:
ฉันใช้สคริปต์นี้เพื่อวางไข่แสงมากพอสำหรับอนุภาคสูงสุดของฉัน (ตรวจสอบให้แน่ใจว่าคุณปรับการตั้งค่าระบบอนุภาคของคุณเพื่อให้ค่าสูงสุดเหมาะสม - ค่าเริ่มต้น 1,000 จะไม่ทำให้การ์ดกราฟิกของคุณมีความสุขมาก) จากนั้นอัปเดต อนุภาค:
[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);
}
}
}
แก้ไข:คุณสามารถสร้างรูปแบบสำเร็จรูปได้โดยสร้างวัตถุเกมเป็นอันดับแรก (ในกรณีนี้สร้าง -> แสง -> จุดไฟ) ตั้งค่าด้วยชื่อ / พารามิเตอร์ / สคริปต์ / ลูก ๆ ที่คุณต้องการจากนั้นลากจากลำดับชั้นของคุณมา Project explorer ของคุณ สิ่งนี้จะบันทึกวัตถุเป็นสินทรัพย์ที่คุณสามารถนำมาใช้ซ้ำในหลาย ๆ ฉาก & สคริปต์พร้อมระดับการสืบทอด คุณสามารถลบสำเนาในฉากของคุณและเนื้อหาจะยังคงอยู่ในโฟลเดอร์สินทรัพย์ของคุณเพื่ออ้างอิงเมื่อจำเป็น
ตรวจสอบให้แน่ใจว่า lightPrefab นั้นมีขนาดค่อนข้างเล็กและไม่ได้เป็นเงาเพื่อให้คุณมีประสิทธิภาพสูงสุดสำหรับทุกสิ่งที่เกิดขึ้นในฉากของคุณ คุณไม่จำเป็นต้องทำให้แสงแท็บเบา ๆ เป็นสีเขียว (หรือสีของหิ่งห้อยของคุณ) - มันจะมาจากสีของอนุภาค
คุณอาจพบว่าคุณสามารถควบคุมหิ่งห้อยได้ดีกว่าหากคุณสร้าง GameObject ของตัวเองแต่ละตัวด้วยรูปสี่เหลี่ยมที่มีป้ายโฆษณาและแสงที่แนบมากับการเคลื่อนไหว / สคริปต์ blinkig แบบกำหนดเองเนื่องจากการใช้ความเชื่อที่น่าเชื่อถือ ฉันรู้ว่า. ;)