Unity3d-更改粒子系统的材质颜色

Unity3d-更改粒子系统的材质颜色,unity3d,particle-system,Unity3d,Particle System,我的敌人有好几种生命,用颜色来象征。 蓝色内红色内黄色-当红色敌人被射杀时,红色被“吹走”(粒子系统),敌人变成蓝色-最后一部分起作用:) 我的问题是访问粒子系统游戏对象的材质。 -这就是我到目前为止所做的: public GameObject explosion; // particle system from the editor private Material xm; // cashed Material "pointer" void sta

我的敌人有好几种生命,用颜色来象征。 蓝色内红色内黄色-当红色敌人被射杀时,红色被“吹走”(粒子系统),敌人变成蓝色-最后一部分起作用:)

我的问题是访问粒子系统游戏对象的材质。
-这就是我到目前为止所做的:

    public GameObject explosion;  // particle system from the editor
    private Material xm;          // cashed Material "pointer"

    void start() {  
        xm = enemyExplosion.GetComponent<ParticleSystemRenderer>().material;  
    }  

. . .

    void Damage( GameObject enemy )
    {
        EnemyMove e = enemy.GetComponent<EnemyMove>();

        xm.color = e.colors[e.life-1];  // line 65

        GameObject explosion = Instantiate( enemyExplosion, enemy.transform.position, enemy.transform.rotation );

        if (--e.life <= 0)
            Destroy(enemy);
    }
公开游戏对象爆炸;//编辑器中的粒子系统
私人材料xm;//现金材料“指针”
void start(){
xm=enemyExplosion.GetComponent().material;
}  
. . .
虚空伤害(游戏对象敌人)
{
EnemyMove e=敌方.GetComponent();
xm.color=e.colors[e.life-1];//第65行
游戏对象爆炸=实例化(enemyExplosion,敌方.transform.position,敌方.transform.rotation);

如果(--e.life应该有大写字母
S
,否则它永远不会被称为杰伊斯,我又做了一次-现在它可以工作了(将“材料”改为“共享材料”),再次感谢:)Ups,我说得太快了-sharedMaterial确实在所有实例之间共享-是否可以仅更改当前实例的颜色?是的..不要使用
sharedMaterial
但是
material
编译器欺骗了我…我已经修复了它:在粒子系统实例化后更改材质颜色-现在我t工作正常(看起来很棒!),但每次敌人命中都有两个getComponent调用:(