Как достучатся к значению переменной.

Общие вопросы о Unity3D

Как достучатся к значению переменной.

Сообщение Antoniv2689 25 апр 2018, 19:35

по порядку попробую объяснить:
У меня на сцене есть несколько объектов,
Этими объектами управляет один скрипт,
также этот скрипт создает на сцене текст - задает ему рандомное численное значение.
и присваивает каждый кадр кординаты объекта (цифры двигаются вместе с объектом).

вопрос как мне скриптом получить доступ к сгенерированному объекту, или его значениям при столкновении с ним, колайдером или тригером.
Antoniv2689
UNITрон
 
Сообщения: 174
Зарегистрирован: 30 мар 2015, 01:35

Re: Как достучатся к значению переменной.

Сообщение Anonymyx 25 апр 2018, 19:42

Создать скрипт для объектов в котором будет храниться его текст, или что у вас там. И когда создаете текст, присваивать ссылку текста этой переменной в скрипте объекта.
Раз вы прививаете тексту координаты объекта, значит у вас имеется ссылка на нужный объект.
Если я правильно понял вопрос...
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Как достучатся к значению переменной.

Сообщение Antoniv2689 27 апр 2018, 20:17

Anonymyx писал(а):Создать скрипт для объектов в котором будет храниться его текст, или что у вас там. И когда создаете текст, присваивать ссылку текста этой переменной в скрипте объекта.
Раз вы прививаете тексту координаты объекта, значит у вас имеется ссылка на нужный объект.
Если я правильно понял вопрос...


Понял спасибо. я тут покопался немного и понял что усложняю жизнь и упростил проект.
но выходит тот же вопрос.
1) У меня на сцене есть 4 объекта, каждый имеет компонент TextMesh - и одним скриптом генерируется случайное число в каждом.
2) Каждый объект имеет boxcollaider2d -
3) Есть функция Void OnTriggerEnter -
4) Мне нужно чтобы при соприкосновении он считал именно то число что сгенерированно случайно у столкнувшигося объекта.

Спасибо
Antoniv2689
UNITрон
 
Сообщения: 174
Зарегистрирован: 30 мар 2015, 01:35

Re: Как достучатся к значению переменной.

Сообщение 1max1 27 апр 2018, 20:22

collision.transform.GetComponent<BlaBla>().randomValue...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как достучатся к значению переменной.

Сообщение Antoniv2689 28 апр 2018, 10:42

1max1 писал(а):collision.transform.GetComponent<BlaBla>().randomValue...


Примерно понял но не совсем догнал в какой скрипт его вставлять и как оно работает, к сожалению мой опыт С# пара десятков уроков.

этот скрипт берет переменную d = (double)Examlpe.c; с другого скрипта, в зависимости от рандома решает что с ней делать, и выводит на экран. От этого скрипта у меня работают несколько объектов, соответственно мне нужно при столкновении триггеров считать то что вывелось на экран именно в том объекте с которым столкнулся.
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Otvet1 : MonoBehaviour {
    public static double d;
    int f;
    int e;
    int r;
    public static GameObject text1;
    public GameObject obj;

        void Start () {
        r = Random.Range(1, 3);
        f = Random.Range(1, 4);
        e = Random.Range(1, 5);
        d = (double)Examlpe.c;
        Primer();
    }
        void Update () {
        text1.transform.position = obj.transform.position;
        text1.transform.Translate(new Vector3(-0.5f, 0.5f, -2.5f));
        if (obj.transform.position.y > 12.9f)
        {
            d = (double)Examlpe.c;
            Exemple();
            Primer();
        }
    }
    void Exemple()
    {
        r = Random.Range(1, 3);
        f = Random.Range(1, 4);
        e = Random.Range(1, 5);
    }
    void Primer()
    {
        if (r == 1)
        {

        }
        else
            if (f == 0)
        {
            d = d + e;
        }
        else if (f == 1)
        {
            d = d - e;
        }
        else if (f == 2)
        {
            d = d * 1.2;
        }
        else if (f == 3)
        {
            d = d / 1.2;
        }
        if (d == (int)d)
        {
            text1.GetComponent<TextMesh>().text = d.ToString();
        }

        else
            text1.GetComponent<TextMesh>().text = d.ToString("F2");
    }
}


второй скрипт тут пока только считаю и проверяю столкновении
Синтаксис:
Используется csharp
 public class Trigerenter : MonoBehaviour {
    int d = 0;
    public GameObject obj;

    private void OnTriggerEnter2D(Collider2D othher) {
        print(d++);
   
    }
Antoniv2689
UNITрон
 
Сообщения: 174
Зарегистрирован: 30 мар 2015, 01:35

Re: Как достучатся к значению переменной.

Сообщение 1max1 28 апр 2018, 13:13

Пихать туда, где происходит обработка столкновения, в твоем случае это OnTriggerEnter2D, там и бери компонент от other и смотри что там у него за переменная.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как достучатся к значению переменной.

Сообщение Antoniv2689 28 апр 2018, 13:52

1max1 писал(а):Пихать туда, где происходит обработка столкновения, в твоем случае это OnTriggerEnter2D, там и бери компонент от other и смотри что там у него за переменная.


Спасибо за совет, но пока прочитал форум, методом тыка получил того чего хотел.
перенес код непосредственно в скрипт отвечающий за формирование числа, а там уже конвертирую или делаю что мне надо. спасибо
Синтаксис:
Используется csharp
 private void OnTriggerEnter2D(Collider2D collision)
 
    {
        num = double.Parse(text1.GetComponent<TextMesh>().text);
        print(num);
        //print(text1.GetComponent<TextMesh>().text);
    }
 
Antoniv2689
UNITрон
 
Сообщения: 174
Зарегистрирован: 30 мар 2015, 01:35


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 11