2016-07-06 81 views
2

我有两个对象在行为方面做同样的事情,但唯一不同的是所造成的损害。现在我有两个脚本是互相粘贴的副本。相同的功能一样。我如何使1脚本优化我的工作,而不是重复我的东西?谢谢。Unity3D优化代码

using UnityEngine; 
using System.Collections; 


public class Script1 : MonoBehaviour { 

private float attackDamage = 5; 

空隙OnCollisionEnter(冲突项) { item.gameObject.GetComponent()损伤(attackDamage)。 disableObs(); }

public void disableObs() 
{ 
    gameObject.SetActive(false); 
} 

}

脚本2是同样的事情。我只是改变损坏变量

回答

1

装饰你的变量有:

[SerializeField] private int damage; 

现在,这是一个私有变量暴露在检查员身上。

关于工作流程,您可以将尽可能多的Script1拖动到许多对象上,它们将拥有自己的Script1一组操作。但目的是让步兵的伤害值为1,坦克的伤害值为100.你需要做的就是设置预制值。一个地方把他们全部。然后你可以实例化预制件,它们将使用给定的值。

1

您可以将损坏变量更改为public,并将脚本添加到不同的对象时,通过检查器设置该变量。或者,如果你是通过实例代码做这种改变只是调用setDamage(损坏)功能的特定对象:

gameobject.GetComponent<Script1>().setDamage(damage1); 
gameobject2.GetComponent<Script1>().setDamage(damage2); 
+0

我的效果怎么样?粒子系统同样的事情? – John

+0

是的,您可以在具有不同配置的不同对象中使用相同的脚本和粒子系统。如果有帮助,请以回复为准。 –

+0

是的。但我有一个小问题不在我的问题中。在销毁im禁用我的对象,我的粒子系统是对象的孩子。所以效果不会发挥,因为它被禁用。无论如何要延迟效果被禁用?我希望它能做到效果,然后禁用。 – John