Нахождение собственного игрового объекта (клона) из скрипта

Здесь я работаю над фрагментом кода, в котором я создаю x клонов GameObject (префаба). Есть несколько автомобилей, которые создаются случайным образом для имитации движения, к каждому клону затем прикрепляются несколько скриптов; один для управления своим ИИ, один для управления столкновениями, и я хочу, чтобы третий уничтожил машину, когда она «за пределами поля» или слишком далеко от игры, чтобы мы ее больше не видели.

Проблема в том, что я понятия не имею, как получить доступ к GameObject, к которому в настоящее время прикреплен скрипт. Мне удалось найти любой GameObject, с которым я сталкиваюсь, из OnCollisionEnter2D, но я не нашел способа найти «себя» или «себя».

Я знаю, что у меня есть жесткое тело2D, так как я могу управлять автомобилем без создания экземпляров или добавления каких-либо компонентов.

function FixedUpdate () 
{
    // Controls the velocity of the car
    rigidbody2D.angularVelocity = 0;
}

Есть какие-нибудь подсказки о том, как я могу удалить вышеупомянутый GameObject (включая жесткое тело2D) и остановить / деактивировать все прикрепленные к нему скрипты?

Я думаю, что могу уничтожить GameObject (и все, что к нему прикреплено) с помощью «Destroy (GameObject)», просто не знаю, как правильно установить GameObject.

Изменить: Кроме того, было бы очень полезно знать имя префаба, используемого для этого экземпляра GameObject (разные префабы используют одни и те же скрипты).


person Tom    schedule 07.01.2015    source источник


Ответы (1)


Что ж, у каждого скрипта есть свойство с именем gameObject, которое представляет собой gameObject, к которому скрипт в настоящее время прикреплен. Итак, да, ваша догадка верна, вы можете просто вызвать Destroy (gameObject). Если скрипт прикреплен к объекту, атрибут gameObject устанавливается Unity.

[Edit] Это также приведет к уничтожению всех компонентов (включая скрипты), прикрепленных к объекту.

person Larta    schedule 07.01.2015
comment
Даже если я только что добавил myClone.AddComponent (aiScript); после аннулирования моего клона? - person Tom; 07.01.2015
comment
Вы гений, и я был почти таким же. У меня был GameObject (с заглавной буквой G). Сейчас я чувствую себя глупо. ›_‹ Но есть ли способ узнать имя префаба, который я использую? - person Tom; 07.01.2015
comment
Ха-ха, поэтому я написал это с буквой g, я не был уверен, что это была опечатка с вашей стороны. Кстати, почему вы добавляете aiScript после создания объекта? Почему бы вам просто не добавить его в префаб? - person Larta; 07.01.2015
comment
Мне нужны разные сценарии, основанные на позициях появления, aiScript - это просто переменная (String), которая содержит имя сценария, который мне нужен для этой точки появления. Это беспорядок, но он работает: P Я мог найти имя, просто написав gameObject.name :) - person Tom; 07.01.2015
comment
Что ж, тогда это кажется правильным, и это лучше, чем создавать префаб для каждого aiScript ^^ Это нормально. Рад, что смог как-то помочь тебе - person Larta; 07.01.2015