2017-01-31 10 views
0

Я хочу установить цвет «Particle System», который я добавляю к игровому объекту во время выполнения. и игровой объект, и система частиц также создаются во время выполнения.Unity - цвет системы частиц не установлен правильно в сборке android

У меня есть следующий код, который хорошо работает на ПК, когда я его запускаю ... Но проблема в том, что в строках «Android» цвет не устанавливается правильно, а частицы всегда «розовые».

Оно должно быть: enter image description here

Но в Android он видел, как: enter image description here

здесь код я использую:

GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);  
    sphere.transform.position = new Vector3(x, y, z); 
    sphere.AddComponent<ParticleSystem>(); 
    var ps = sphere.GetComponent<ParticleSystem>(); 
    ps.startLifetime = 1; 
    ps.startSpeed = 0.01f; 
    ps.startSize = 0.03f; 
    ps.maxParticles = 10000; 
    ParticleSystemExtension.SetEmissionRate(ps, 10000); 
    var sh = ps.shape; 
    sh.shapeType = ParticleSystemShapeType.Circle; 
    sh.radius = 0.69f; 

    var cbl = ps.colorOverLifetime; 
    cbl.enabled = true; 
    Color mater = Color.green; 
    cbl.color = new ParticleSystem.MinMaxGradient(mater); 
+0

Возможно, это связано с тем, что материал не находит текстуру. Можете ли вы рассказать мне, где ваша текстура помещается на диск? Или путь к текстуре? – Nain

+0

@Nain tnx для вашего комментария. как вы видите, я создаю все в коде и не добавляю никаких материалов к моим частицам! Я должен делать?! – mimskydo

ответ

0

О Боже! Я меняю свое решение, и он работает нормально!

Сначала я создаю пустой GameObject с присоединенной частью ParticleSystem, а затем создаю сборку этого. после этого я добавляю этот сборник в свою сцену и устанавливаю ему необходимые свойства, а затем деактивирую это.

В моем скрипте добавьте общедоступный объект GameObject и назначьте его моему объекту gameObject (называемому кольцом), который был создан ранее.

Тогда instatiate его следующим кодом:

GameObject ps = Instantiate(Ring); 

затем сделать ps ребенка sphere с, что я создавал в коде:

Ring.GetComponent<ParticleSystem>().startColor = Color.green; 
GameObject ps = Instantiate(Ring); 
ps.transform.parent = sphere.transform; 
ps.transform.localPosition = Vector3.zero; 
ps.SetActive(true); 

И это все! Он работает хорошо!