2017-04-06 4 views
0

私は2Dプラットフォームのゲームに取り組んでいます。私は材料とスプレーを持っており、見つけたシェーダはhereです。材料はすべてのプレハブに影響しますか?

シェーダは、スプライトのディゾルブ効果に影響を与える値プロパティーを持っています。 しかし、シーン内で同じゲームオブジェクトを複数回使用している場合(プレハブまたはコードでインスタンス化した場合)、あるマテリアルのディゾルブ値を変更すると、私は同じスプライト(画像)を使用しているため、同じ素材を持つすべてのゲームオブジェクト(素材名の変更、素材の複製、すべての種類の素材の複製)を行った。そのような行動を避ける?

float dissolvePower = dissoleMaterial.GetFloat(dissolveProperty);   
float minus = -0.1f; 
while (dissolvePower > 0) 
{ 
    //print(dissolvePower); 
    dissolvePower += minus;   
    dissoleMaterial.SetFloat(dissolveProperty, dissolvePower);   
    yield return new WaitForSeconds(0.07f); 
} 
print("Exit DeathDissolve()"); 
Destroy(gameObject); 
+0

材料や色を変更するために使用するコードを投稿してください – Programmer

+0

コメントでは特に読めないので、コードで回答を編集する必要があります。 – Maakep

答えて

1

あなたはあなたのゲームオブジェクトごとに同じ材料を使用しています。

したがって、材料のプロパティ(ディゾルブ値など)を変更した場合、これをInspectorのGameObjectまたはマテリアル自体で行うかどうかにかかわらず、そのマテリアルを使用する各GameObjectの値が変更されます。

これを避けるには、別の素材が必要です。マテリアルを複製し、別のものと呼ぶことができ、異なるものにしたいGameObjectにそのマテリアルを適用することができます。

+0

あなたの答えをありがとう...はい私は、私は各ゲームオブジェクトのmatrerialを変更していると知っている、そして他のゲームオブジェクトは、変更によって影響を受けていない、同じスプライトを持つものだけ! – Dude

+0

マテリアルmaterialClone =インスタンス化(materialDisolve); – Dude

関連する問題