【发布时间】:2015-01-04 16:10:41
【问题描述】:
我有以下:
炮塔球经理:
using UnityEngine;
using System.Collections;
public class TurretBallManager : MonoBehaviour {
// Use this for initialization
public GameObject BallPrefab;
public GameObject TurretPrefab;
public static TurretBallManager instance;
public int turretSpawnTime=35;
public int LastTurretTime=0;
Vector2 v;
void Start () {
instance = this;
v = new Vector2(TurretPrefab.transform.position.x,TurretPrefab.transform.position.y);
}
// Update is called once per frame
void Update () {
if (Time.time > LastTurretTime + turretSpawnTime) {
GameObject T = Instantiate(TurretPrefab,v,Quaternion.identity) as GameObject;
//T.AddComponent<Turret>();
v.x=T.transform.position.x+2;
}
}
}
炮塔类:
using UnityEngine;
using System.Collections;
public class Turret : MonoBehaviour {
// Use this for initialization
double LastBallTime=0.0;
double LastTurretTime=0.0;
public decimal spawnballTime=1.5;
Vector2 v ;
void Start () {
}
// Update is called once per frame
void Update () {
if (Time.time > LastBallTime + spawnballTime) {
LastBallTime=Time.time;
Debug.Log (transform.position);
GameObject B = Instantiate(TurretBallManager.instance.BallPrefab, transform.position, transform.rotation) as GameObject;
//B.AddComponent<Ball>();
}
}
}
球类:
using UnityEngine;
using System.Collections;
public class Ball : MonoBehaviour {
// Use this for initialization
void Start () {
}
void OnMouseDown() {
Object.Destroy (gameObject);
}
// Update is called once per frame
void Update () {
}
void OnBecameInvisible ()
{
Debug.Log ("destroyed");
Destroy(gameObject);
}
}
我有一个炮塔希望每 1 秒发射一个球,这个球是一个预制的希望有 Ball 类(当球出界或被触摸时,它应该被销毁)我想做的是创造另一个炮塔每35 sec 希望也应该每 1 秒发射一个球..
我面临的是休闲问题:
- 炮塔是在
35 sec之后创建的,但它的球没有实现ball script并且它们没有被摧毁 - 由于创建的球数导致溢出,整个项目冻结
- 图 1:游戏开始时
- 图 2:35 秒结束时
- 图 3:您可以看到,在 35 秒结束后,同时创建了数百万个炮塔
【问题讨论】:
标签: c# unity3d unityscript