不同的好多预制体共用一个脚本,生成的多了之后有的预制体身上挂载的此脚本会自动关闭
脚本就是下面这个,这个是什么问题,咋解决
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class WeponControl : MonoBehaviour
{
//目标敌人
private GameObject Enemy;
//从自身到目标敌人的向量
Vector3 Direction;
[Header("爆炸特效")]
public GameObject BoomEff;
[Header("爆炸之后的火焰特效")]
public GameObject FireEff;
float time = 1;
[Header("锁定或捕捉状态")]
Text State;
//发射武器后的小地图外边框
// Start is called before the first frame update
void Awake()
{
Enemy = CameraControl.Target;
Direction = (Enemy.transform.position - this.transform.position).normalized;
State = GameObject.Find("Text瞄准状态").GetComponent<Text>();
}
private void Start()
{
}
// Update is called once per frame
void Update()
{
if (Enemy == null)
{
Destroy(this.gameObject);
}
else
{
Direction = (new Vector3(Enemy.transform.position.x, Enemy.transform.position.y + 30, Enemy.transform.position.z) - this.transform.position).normalized;
this.transform.LookAt(new Vector3(Enemy.transform.position.x, Enemy.transform.position.y + 30, Enemy.transform.position.z));
this.transform.position += Direction * Time.deltaTime * 450;
if (Vector3.Distance(Enemy.transform.position, this.transform.position) <= 70)
{
//已经击中目标
Debug.Log("距离小于70米");
Enemy.SetActive(false);
Destroy(this.gameObject);
GameObject CObj = Instantiate(BoomEff);
CObj.transform.position = Enemy.transform.position;
GameObject CObj1 = Instantiate(FireEff);
CObj1.transform.position = Enemy.transform.position;
Enemy.GetComponent<AudioSource>().Play();
this.GetComponent<AudioSource>().Stop();
Destroy(CObj, 1f);
State.text = "未锁定";
//炮弹销毁之后重新为没发射过的状态
CameraControl.iFire = false;
CameraControl.iDir = true;
}
}
this.GetComponent<AudioSource>().volume = time;
time -= Time.deltaTime * 0.5f;
}