下面是我的腳本,它放置在我的播放器項目符號上,每次我的播放器火,玩家子彈生成後擊中敵人或阻止它破壞,在這個腳本我想當它發送信息後,它會對其他敵人發出警報,但只能在一個關卡中發生一次(每當玩家發出子彈時,它不會每次都發出警報,只是一次),這是我的代碼。先進的謝謝。如何發送消息一級Unity3d C#
using System.Collections;
public class player_bullet_mover : MonoBehaviour
{
[HideInInspector]
public Vector3 target;
public GameObject target_object;
public float damage_is;
private player_damage_controller player_damage_script;
// Use this for initialization
void Start()
{
player_damage_script = GameObject.FindObjectOfType (typeof(player_damage_controller)) as player_damage_controller;
if(target == Vector3.zero)
{
Destroy( this.gameObject);
}
transform.LookAt (target);
}
// Update is called once per frame
void Update()
{
this.transform.position = Vector3.MoveTowards (this.transform.position , target, 300 * Time.deltaTime);
}
void OnTriggerEnter(Collider other)
{
if(other.CompareTag("Enemy"))
{
other.SendMessage("damage", 2);
Destroy(this.gameObject);
}
//call alarm_enemies function here but once in a level, not every time, it generate
}
public void alarm_enemies()
{
//send message to enemy script
}
}
我強烈建議你使用[Collisions](https://unity3d.com/learn/tutorials/topics/physics/detecting-collisions-oncollisionenter)來檢測你的子彈何時擊中敵人,而不是像那樣做在更新功能中。 – CNuts
其實我整個項目都是這樣設計的,所以現在不能改變,因爲它對我來說會變得混亂。所以下次我會記住這一點 –
沒有下一次。這是一個非常糟糕的**代碼。如果它保證它,你必須從頭開始,因爲不能保證if語句將成立。 – Programmer