Version: 2021.3
public int maxLights ;

描述

对此模块可以创建的光源数设置限制。

此值对避免性能不佳很有用。创建大量光源很容易,这会影响性能。对光源数进行限制有助于维持性能。

using UnityEngine;
using System.Collections;

// For best results, use Deferred Rendering (see Camera settings) public class ExampleClass : MonoBehaviour { private ParticleSystem ps; public Light lightPrefab; // Provide a light Prefab in the inspector public float hSliderValueRatio = 1.0f; public float hSliderValueMax = 1000.0f; public bool randomDistribution = true;

void Start() { ps = GetComponent<ParticleSystem>(); ps.transform.localRotation = Quaternion.Euler(0.0f, 0.0f, 45.0f);

var shape = ps.shape; shape.shapeType = ParticleSystemShapeType.Circle;

var lights = ps.lights; lights.enabled = true; lights.light = lightPrefab;

// plane to receive lights var plane = GameObject.CreatePrimitive(PrimitiveType.Plane); plane.transform.parent = ps.transform; plane.transform.localPosition = new Vector3(0.0f, 0.0f, 3.0f); plane.transform.localScale = new Vector3(20.0f, 20.0f, 20.0f); plane.transform.localRotation = Quaternion.Euler(-90.0f, 0.0f, 0.0f);

var material = new Material(Shader.Find("Standard")); material.color = new Color(0.1f, 0.1f, 0.1f, 1.0f); plane.GetComponent<MeshRenderer>().material = material; }

void Update() { var lights = ps.lights; lights.ratio = hSliderValueRatio; lights.maxLights = (int)hSliderValueMax; lights.useRandomDistribution = randomDistribution; }

void OnGUI() { GUI.Label(new Rect(25, 40, 100, 30), "Ratio"); GUI.Label(new Rect(25, 80, 100, 30), "Max Lights");

hSliderValueRatio = GUI.HorizontalSlider(new Rect(95, 45, 100, 30), hSliderValueRatio, 0.0f, 1.0f); hSliderValueMax = GUI.HorizontalSlider(new Rect(95, 85, 100, 30), hSliderValueMax, 0.0f, 500.0f);

randomDistribution = GUI.Toggle(new Rect(25, 125, 400, 30), randomDistribution, "Randomly assign Lights to Particles instead of evenly distributing them."); } }