Я работаю над гоночной игрой, в которой есть скоростные ускорители на земле. Когда транспортное средство касается его, скрипт, прикрепленный к спидбустеру, создает сборку огня, а затем уничтожает ее через 2 секунды.
Это мой скрипт (на C#), который раньше работал нормально, но теперь функция Destroy() не имеет никакого эффекта, и я вижу экземпляры моего префаба Fire в иерархии игры:
private GameObject _fireModel, _fireObj;
void Start ()
{
_fireModel = Resources.Load("Fire1") as GameObject;
_watch = new Stopwatch();
enabled = false; // (don't call Update() on each frame)
}
void OnTriggerEnter (Collider col)
{
_fireObj = Instantiate(_fireModel) as GameObject;
enabled = true; // (do call Update() on each frame)
_watch.Start();
}
void Update ()
{
_fireObj.transform.position = _player.position;
if (_watch.ElapsedMilliseconds >= _fireDurationMs)
{
Destroy(_fireObj);
_watch.Stop();
_watch.Reset();
enabled = false; // if I remove this line,
// I get a console error saying _fireObj
// has been destroyed! Yet I can still
// see it on the game and in the hierarchy
}
}
Видели ли вы случай, когда этот сценарий не уничтожил бы экземпляр Fire1?
_fireObj
нулю..? и если это так.. тогда назначьте его = null.. или внедрите IDisposible в свой игровой объект.. прочитайте следующее answers.unity3d.com/questions/37531/ - person MethodMan   schedule 30.11.2015