ParticleSystem.ShapeModule.texture
Declaration
public Texture2D texture;Описание
Указывает Текстуру для оттенения начальных цветов частицы.
Для того, чтобы оттенить начальные цвета частиц, модуль Shape считывает пиксели из этой Текстуры на CPU. Это означает, что вы должны включить опцию чтения/записи в Настройках Импорта назначенной Текстуры.
Для того, чтобы оттенить частицы, модуль Shape сначала растягивает Текстуру по указанной вами форме. Затем, когда система излучает частицу из точки на форме, модуль Shape использует цвет Текстуры в этом месте в качестве цвета частицы.
Чтобы увидеть, как Текстура растягивает по форме, выберите Particle System в представлении Hierarchy и разверните модуль Shape. В представлении Scene визуализация формы включает предварительный просмотр Текстуры.
using UnityEditor; using UnityEngine;
[RequireComponent(typeof(ParticleSystem))] 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; } }