下面是我的脚本,它放置在我的播放器项目符号上,每次我的播放器火,玩家子弹生成后击中敌人或阻止它破坏,在这个脚本我想当它发送信息后,它会对其他敌人发出警报,但只能在一个关卡中发生一次(每当玩家发出子弹时,它不会每次都发出警报,只是一次),这是我的代码。先进的谢谢。如何发送消息一级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