Страница 1 из 1

Доступ к переменным в клонах

СообщениеДобавлено: 15 авг 2011, 23:31
Olean
Такой вопрос.
Я создаю рандомно объекты - астероиды.
Как потом получить у их переменных доступ, если они все имеют одинаковое имя?
Синтаксис:
Используется java
var DestrSkript = GameObject.Find("Aster_prefab(Clone)").GetComponent("Object_destroy");
DestrSkript.life=x+y+z;
 

Когда я устанавливаю переменную, то после создания нового объекта переменная в старом дефолтится, а в новом меняется.
Это я обшел через (полная Ж), используя rigidbody.mass как временное хранилище переменной, но дальше
снова в другом скрипте та же история.
Синтаксис:
Используется java
if( contact.otherCollider.name=="Aster_prefab(Clone)")
{var Skript = GameObject.Find(contact.otherCollider.name).GetComponent("Object_destroy");
life=life-Skript.life;
 

Пытаюсь собственно узнать с кем была коллизия, и вычесть переменную.
Rigidbody я задефолтил, чтобы не влияло на процесс, так что взять от туда содержимое перменной не могу. Да и не правильно это.

Вопрос - как получать доступ к переменным в клонированных объектах?

Re: Доступ к переменным в клонах

СообщениеДобавлено: 15 авг 2011, 23:48
DbIMok
Olean писал(а):если они все имеют одинаковое имя?

почему не дать им разные имена?
Olean писал(а):Как потом получить у их переменных доступ

взять gameObject с которым столкнулись, получить с него компонент (скрипт) с переменной, прочитать значение, вызвать функцию:
Синтаксис:
Используется csharp
string name = myCollision.gameObject.GetComponent<MyScript>().someVar;
myCollision.gameObject.GetComponent<MyScript>().DieBitch();

Re: Доступ к переменным в клонах

СообщениеДобавлено: 17 авг 2011, 15:56
Olean
Спасибо, получилось.

Синтаксис:
Используется java
        aster_count++;
        thingToMake.name = String.Format("{0}_{1}", thingToMake.name,aster_count);
        var DestrSkript = GameObject.Find("Aster_prefab(Clone)_"+aster_count).GetComponent("Object_destroy");
        DestrSkript.life=x+y+z*2;
 

Синтаксис:
Используется java
if (contact.otherCollider.tag=="Asteroid")//{life=0;}
{var Skript = GameObject.Find(contact.otherCollider.name).GetComponent("Object_destroy");
life=life-Skript.life;}