我有一個從MonoBehavior派生並附加到一個遊戲對象的類的問題。當這個GameObject(「彈丸」)與某物發生碰撞時,組件「效果」應該被僞裝並存儲在被擊中目標上的List()中。在任務完成後,射彈應該被銷燬。試圖把一個類的副本/克隆/重複的列表中
當我運行這個,我只在列表中看到「缺少(效果)」。我想我只是給列表分配一個參考,當拋射物被刪除時,參考文獻就會丟失。
彈丸遊戲物體具有的影響和彈丸類作爲連接組件的:
public class Effect : MonoBehaviour {
public float dps = 2f;
public float duration = 2f;
public operatingDelay = 0.1f;
public bool freezing = false;
void Start(){
StartCoroutine("DamageHealRoutine");
}
IEnumerator DamageHealRoutine() {
int goalCount = (int)(duration/operatingDelay);
float partialDamage = dps * operatingDelay;
for (int i = 0; i < goalCount; i++) {
if (dps > 0)
stats.TakeDamage(partialDamage);
else if (dps < 0)
stats.GetHeal(partialDamage);
yield return new WaitForSeconds(operatingDelay);
}
}
}
public class Projectile : MonoBehaviour {
public Effect effect;
private void Awake() {
effect = GetComponent<Effect>(); // not null
}
public void hittedSomething(GameObject go) {
go.GetComponent<Stats>().effects.Add(effect);
// Without destroying, the List entry is assinged accordingly.
Destroy(this.gameObject);
//Became Missing when destroying the Projectile
}
}
目標遊戲對象具有作爲組分附着在統計類:
public class Stats : MonoBehaviour {
public List<Effect> effects;
}
影響必須從MonoBehavior一個繼承者,因爲它應該能夠啓動協程,我想改變它的值。
如果不在目標上添加效果作爲組件,是否有可能實現此目的?
EDIT1: Missing
是的,這是可能的。 *「效果必須是來自MonoBehavior的繼承者,因爲它應該能夠啓動協同程序,並且我想修改它的值」*您可以包含協程部分嗎? – Programmer
射彈有什麼效果?這是一個預製參考?這是一個孩子嗎?或者像游泳池中的其他效果中的一個對象? – Bijan
@編程器添加了協程部分。 –