2017-01-31 4 views
0

ランタイムにゲームオブジェクトに追加するパーティクルシステムの色を設定します。 ゲームオブジェクトとパーティクルシステムの両方が実行時にも作成されます。ユニティ - アンドロイドビルドでパーティクルシステムの色が正しく設定されていません

私はそれを実行するとPC上でうまく動作するコードを持っています... しかし、問題は "Android"ビルドでは、色が正しく設定されておらず、パーティクルは常に "ピンク"です。

それは次のようになります。 enter image description here

しかし、Androidの中で、それはと見られて:

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 tnx。 – Nain

+0

ご覧のとおり、私はコード内のすべてを作成し、パーティクルには何も追加しません!すべきか? – mimskydo

答えて

0

ああ、神様: enter image description here

ここで私が使用するコードです!私は私のソリューションを変更し、それは正常に動作します!

まず、ParticleSystemを持つ空のGameObjectを作成してから、そのプレハブを作成します。その後、このプレハブを自分のシーンに追加し、それに必要なプロパティを設定し、それを無効にします。

私のスクリプトでは、公開GameObjectを追加し、前に作成したgameObject(Ringという)に割り当てました。

その後instatiateそれは、次のコードで:

GameObject ps = Instantiate(Ring); 

その後、私はコード内で作成していたsphere秒のps子作り:

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

をそして、それはそれです!それは素晴らしい動作します!

関連する問題