Как уничтожить объект
Перейти к содержимому

Как уничтожить объект

  • автор:

Как уничтожить объект при соприкосновении с определенной поверхностью в UNITY?

Начал писать игру. Идея в том, что у нас в самом низу экрана есть пила (а точнее две, но это не так важно), которая крутится. Сверху на неё падает красный квадратик (необработанная руда), который со временем «перемалывается» в золотые треугольнички (золотая руда\обработанная). Скрипт разрушения необработанной руды и спавна на её месте золотой работает отлично. Но проблема в том, что нужно куда-то девать нашу золотую руду.
Для этого я создал плоскость под пилами, которую игрок не будет видеть. Идея в том, что как только золото касается плоскости, то оно должно уничтожаться (в т.ч. и из памяти, чтобы игра не тормозила, если золота станет слишком много). Как это реализовать? Что писать в последнем скрипте?

63541fda0daa8589291546.jpeg

63542024e96de587258193.jpeg

6354202f3d0ab526314032.jpeg

using System.Collections; using System.Collections.Generic; using UnityEngine; public class SawSettings : MonoBehaviour < // Здесь мы заставляем наши пилы крутиться private float rotationZ; public int rotationSpeed; public bool clockWiseRot; // По часовой или против часовой void Update() < if (clockWiseRot) rotationZ += Time.deltaTime * rotationSpeed; else rotationZ -= Time.deltaTime * rotationSpeed; transform.rotation = Quaternion.Euler(0, 0, rotationZ); >>
using Mono.Cecil.Cil; using System.Collections; using UnityEngine; public class RoughOre : MonoBehaviour < public GameObject goldOre; // Обьект, который появляется после уничтожения красной руды public float OreDestructionCounter = 2f; // Время, спустя которое красная руда уничтожается private int AmountOfGoldOre = 3; // Сколько золота мы заспавним на месте уничтоженной красной руды private void OnCollisionEnter2D(Collision2D collision) < Destroy(gameObject, OreDestructionCounter); // Уничтожаем красную руду после соприкосновения с пилами >private void OnDestroy() < // Спавн золотой руды после разрушения красной for (int i = 0; i < AmountOfGoldOre; i++) < if (i < AmountOfGoldOre) < Instantiate(goldOre, transform.position, transform.rotation); >else < break; >> > >
using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; public class GlobalDestroyer : MonoBehaviour < // Просто метка плоскости, чтобы золотая руда понимала, что касается именно её >
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GoldOre : MonoBehaviour < private void OnCollisionEnter2D(Collision2D collision) < if (collision.collider.GetComponent()) < // . >> >
  • Вопрос задан более года назад
  • 187 просмотров

Как уничтожить или удалить объект с помощью кода в Юнити

Заметьте что функция Destroy может уничтожать отдельные компоненты без влияния на сам объект. Частая ошибка — писать что-то вроде этого:

Destroy(this);

Добавить комментарий Отменить ответ

Мы — Wow Games,
команда, которая разрабатывает игры, а также приложения, помогающие Вам делать свои игры. Мы поможем, если у Вас возникли проблемы, и мы всегда рады новым участникам в нашей команде. Не бойтесь задавать вопросы, мы всегда на них ответим.

Всем привет!
Мы — Wow Games, команда, которая разрабатывает игры, а также приложения, помогающие Вам делать свои игры. Мы поможем, если у Вас возникли проблемы, и мы всегда рады новым участникам в нашей команде. Не бойтесь задавать вопросы, мы всегда на них ответим.

Как уничтожить объект JavaScript?

Если в этом действительно будет необходимость и это не повредит целостности кода — сборщик мусора сделает все за вас.

В противном случае — скорее всего это бесполезная трата времени ( поверьте javascript сейчас оптимизирован достаточно чтобы достойно справляться с подобной задачей )

А после чего у вас вообще появились такие мысли? Если какой-то код недостаточно быстро работает или ест много памяти — скорее всего виноват код, а не какой-то объект

Для того чтобы переменная имела значение неопределенности, достаточно ей (как ни странно :D) присвоить неопределенность, т.е. например:

var someObj = ; console.log(someObj); // -> < someValue1: 0, someValue2: 1 >someObj = undefined; console.log(someObj) // -> undefined, теперь (someObj === undefined) === true // но, надо знать и понимать, что undefined != false // -> true 

Чтобы можно было использовать условие типа if(!someObj) , достаточно

 someObj = false; // теперь - !someObj === true 

Как уничтожить объект java

Java не позволяет пользователю самостоятельно удалять объекты. Этим занимается «сборщик мусора» в процессе работы JVM. Чтобы объект мог быть удален, на него не должно быть сильных ссылок. Для этого переменной, содержащей объект, можно присвоить значение null .

public class App  public static void main(String[] args)  Object object = new Object(); // логика программы object = null; // теперь объект может быть автоматически удален сборщиком мусора. > > 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *