2016-07-06 118 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