Дать префабу клонировать скрипт из другого префаба в Unity3dC#

Место общения программистов C#
Ответить
Anonymous
 Дать префабу клонировать скрипт из другого префаба в Unity3d

Сообщение Anonymous »

У меня есть следующее:
TurretBallmanager:

Код: Выделить всё

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();
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();
}

}
}
Класс мяча:

Код: Выделить всё

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 секунд, которая также должна стрелять шаром каждые 1 секунду
Я столкнулся со следующими проблемами:
  • башня создается после 35 sec, но мяч не реализует сценарий мяча и не уничтожается
  • Происходит переполнение из-за количества созданных шаров и всего проекта зависает
Изображение

Изображение

Изображение
  • Изображение 1: как как только игра начало
  • Изображение 2: по истечении 35 секунд.
  • Изображение 3: вы можете видеть, что миллионы турелей создаются одновременно, как только 35 секунд. секунда заканчивается


Подробнее здесь: https://stackoverflow.com/questions/277 ... in-unity3d
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»