Суббота, 20 Апреля 2024, 02:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Скрипт. Массив. GetComponent. [Решено] (Меняю у элемента массива, через GetComponent, значение...)
Скрипт. Массив. GetComponent. [Решено]
minuzzДата: Суббота, 05 Июля 2014, 17:53 | Сообщение # 1
Woute.
Сейчас нет на сайте
Всем доброго времени суток.

Возникла проблема:

Есть скрипт - "test"
В этом скрипте есть mas - массив игровых объектов (GameObject). на каждом GameObject висит скрипт "wheel_direction".

В скрипте "wheel_direction" есть int'овая переменная "wheel_dir" (равная 3), публичная.

Пытаюсь в скрипте "test", через GameComponent, у пятого объекта в mas (mas[4]), изменить значение wheel_dir, на "0".
Но значение wheel_dir меняется у всех элементов массива.


Пожалуйста подскажите, где ошибка?

ps
Вероятно, где-то я туплю... но уже всю голову сломал...

скрипт "test":

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {

public GameObject go;
public GameObject[] mas = new GameObject[10];

// Use this for initialization
void Start () {

for (int i = 0; i <= 9; i++)
{

mas[i] = go;

}

}

// Update is called once per frame
void Update () {

if (Input.GetKeyDown (KeyCode.A))
mas [4].gameObject.GetComponent<wheel_direction> ().wheel_dir = 0;

}

void OnGUI () {

for (int i = 0; i <= 9; i++)
{
GUI.Label (new Rect (15 * i, 15, 45, 45),
"" + mas[i].gameObject.GetComponent<wheel_direction>().get_wheel_dir());
}

}

}

скрипт "wheel_direction":

using UnityEngine;
using System.Collections;

public class wheel_direction : MonoBehaviour {
public int wheel_dir = 3;

public void wheel_dir_update() {
this.wheel_dir++;
if (wheel_dir == 4)
wheel_dir = 0;
}

public int get_wheel_dir() {
return wheel_dir;
}

}


Сообщение отредактировал minuzz - Суббота, 05 Июля 2014, 18:33
lakorisДата: Суббота, 05 Июля 2014, 17:59 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Код
mas [4].gameObject.GetComponent<wheel_direction> ().wheel_dir = 0;

Я не успел внимательно прочитать, т.к. времени нет.
Не знаю, но может пробел после массива mas влияет на это?

Добавлено (05.07.2014, 17:59)
---------------------------------------------
да и не понятно, зачем у тебя пробел

Код
GetComponent<wheel_direction>[b]*тут*[/b]()....
ЛевшаДата: Суббота, 05 Июля 2014, 18:00 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Цитата lakoris ()
может пробел после массива mas влияет на это?

Нет.


X.cor.R (Prologue)
minuzzДата: Суббота, 05 Июля 2014, 18:00 | Сообщение # 4
Woute.
Сейчас нет на сайте
Цитата lakoris ()
Я не успел внимательно прочитать, т.к. времени нет.
Не знаю, но может пробел после массива mas влияет на это?


увы, но - нет... не меняет это ничего. sad
lakorisДата: Суббота, 05 Июля 2014, 18:06 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
minuzz, тогда нужно дебажить. Всегда помогает wink

Добавлено (05.07.2014, 18:03)
---------------------------------------------
minuzz,

Код
mas [4].gameObject.GetComponent<wheel_direction> ().wheel_dir = 0;

Может я сейчас ошибаюсь. Но раз у нас массив типа GameObject, то может можно так написать:
Код
mas [4].GetComponent<wheel_direction> ().wheel_dir = 0;


Или нет?

Добавлено (05.07.2014, 18:06)
---------------------------------------------

Цитата minuzz ()
void Start () {

for (int i = 0; i <= 9; i++)
{

mas[i] = go;

}

}


А вот это за что отвечает у тебя?
minuzzДата: Суббота, 05 Июля 2014, 18:18 | Сообщение # 6
Woute.
Сейчас нет на сайте
Цитата lakoris ()
А вот это за что отвечает у тебя?


это заполнение массива mas, объектами из публичной переменной go.

а все остальные варианты не помогают...
спасибо за ответы, в любом случае!

Добавлено (05.07.2014, 18:18)
---------------------------------------------
На другом форуме подсказали в чем ошибка. Я массив заполняю одним и тем же объектом...
Засиделся я за кодом, похоже, раз не смог понять такую элементарную вещь. happy


Сообщение отредактировал minuzz - Суббота, 05 Июля 2014, 18:24
lakorisДата: Суббота, 05 Июля 2014, 18:25 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Цитата lakoris ()
Цитата minuzz ()
void Start () {

for (int i = 0; i <= 9; i++)
{

mas[i] = go;

}

}

А вот это за что отвечает у тебя?


хахах)
minuzzДата: Суббота, 05 Июля 2014, 18:32 | Сообщение # 8
Woute.
Сейчас нет на сайте
lakoris, я сам уже посмеялся над собой)... бывает же такое...)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Скрипт. Массив. GetComponent. [Решено] (Меняю у элемента массива, через GetComponent, значение...)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг