指定要为粒子初始颜色着色的纹理。
using UnityEditor; using UnityEngine;
public class ExampleClass : MonoBehaviour { private ParticleSystem ps; public float alphaThreshold = 0.0f; public bool colorAffectsParticles = true; public bool alphaAffectsParticles = true; public bool bilinearFiltering = false;
void Start() { ps = GetComponent<ParticleSystem>();
var main = ps.main; main.startSpeed = 0.0f; main.startSize = 0.5f; main.startLifetime = 1.0f;
var emission = ps.emission; emission.rateOverTime = 500.0f;
var shape = ps.shape; shape.shapeType = ParticleSystemShapeType.Circle; shape.radius = 6.0f; shape.texture = AssetDatabase.GetBuiltinExtraResource<Texture2D>("Default-Particle.psd"); }
void Update() { var shape = ps.shape; shape.textureClipThreshold = alphaThreshold; shape.textureColorAffectsParticles = colorAffectsParticles; shape.textureAlphaAffectsParticles = alphaAffectsParticles; shape.textureBilinearFiltering = bilinearFiltering; }
void OnGUI() { float y = 120.0f; float spacing = 40.0f;
GUI.Label(new Rect(25, y, 140, 30), "Alpha Threshold"); alphaThreshold = GUI.HorizontalSlider(new Rect(165, y + 5, 100, 30), alphaThreshold, 0.0f, 1.0f); y += spacing;
colorAffectsParticles = GUI.Toggle(new Rect(25, y + 5, 200, 30), colorAffectsParticles, "Color Affects Particles"); y += spacing;
alphaAffectsParticles = GUI.Toggle(new Rect(25, y + 5, 200, 30), alphaAffectsParticles, "Alpha Affects Particles"); y += spacing;
bilinearFiltering = GUI.Toggle(new Rect(25, y + 5, 200, 30), bilinearFiltering, "Bilinear Filtering"); y += spacing; } }