Как объявить переменную с именем равным String?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как объявить переменную с именем равным String?

Сообщение NOVA 18 июл 2017, 18:19

К примеру. Имеется динамический List of Gameobjects. Где эти ГО добавляются и удаляются.
Необходимо создать ещё Динамический List of Vector3, привязанных по смыслу к каждому ГО. Ну лучше чем привязать по имени я пока способа не нашёл.
Поэтому надо объявить переменную с названием по имени ГО листа.
Что-то типа.
List<Vector3> Variable.name=GO.name
GO может быть тоже переименован.

А если конкретней, то что-то типа этого
Синтаксис:
Используется csharp
 public void AddTracker()
    {
        Trackers.Add(Instantiate(TrackerPrefab, new Vector3(0, 0, 0), Quaternion.identity));
        Trackers[Trackers.Count - 1].name = "Tracker" + Trackers.Count.ToString();
        List<Vector3> (TrackerName+CameraName);
        foreach (GameObject SingleTracker in Trackers)
        {
       (TrackerName+CameraName).add(new Vector3 (0,0,TrackerSize))
}
}

Может я вообще не туда копаю?
Кажется нужен двумерный массив List <Vector3> (string,int)
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как объявить переменную с именем равным String?

Сообщение Anonymyx 18 июл 2017, 19:14

Вам нужен словарь, dictionary.
Если я правильно понял...
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Как объявить переменную с именем равным String?

Сообщение NOVA 18 июл 2017, 19:31

Спасибо. А он динамический? А простенький примерчик есть? Гуглится что-то страшное.
Задать словарь с переменной Vector3
Добавить в словарь
Получить количество по strings или по int.
Нашёл что-то более менее вменяемое
https://metanit.com/sharp/tutorial/4.9.php
Но не понял, что там за тип переменной.
Могу я хранить Vector3 или GO в словаре с индексами со всеми вытекающими трансформами и получением имени, индекса ?
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как объявить переменную с именем равным String?

Сообщение Anonymyx 18 июл 2017, 19:47

Извините за тупость, но я слегка не догоняю вас.
Могу я хранить Vector3 или GO в словаре с индексами со всеми вытекающими трансформами и получением имени, индекса ?

Можете.
Dictionary<тип1, тип2> dictionary = new Dictionary<тип1, тип2>();
Вместо тип1 и тип2 подставляете любой тип.
Тип1 это ключ, через индексатор обращаетесь к ключу, и возвращается значение связанное с этим ключом.
Если 2 типов мало, можете сделать примитивную структуру, которая будет хранить нужные типы, и подставляете его в тип2.
Индексатор - это квадратные скобки. dictionary[key].
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Как объявить переменную с именем равным String?

Сообщение ru66ssb 18 июл 2017, 19:52

при добавлении в List так же ведь и добавляется индекс записи - почему на основании него не связать 2 List ?
Аватара пользователя
ru66ssb
UNIт
 
Сообщения: 107
Зарегистрирован: 27 июн 2015, 07:01

Re: Как объявить переменную с именем равным String?

Сообщение NOVA 18 июл 2017, 19:55

Я тоже чего-то не догоняю.
Это больше похоже на какую-то таблицу.

Вот когда я создаю лист из ГО
public List<GameObject> Trackers;
Я могу задав индекс получить или назначить имя ГО, его transform, ещё и обратится к скрипту на нём.
Например
Trackers[2].name = "Tracker2" ;

Что я могу сделать задав словарь?
Dictionary <string, int> TrackerDictionary;
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как объявить переменную с именем равным String?

Сообщение Anonymyx 18 июл 2017, 20:00

Короче, вам надо сделать так, чтобы у вас была что-то вроде таблицы, которая будет хранить объект, и позицию этого объекта?
Или не так.
У вас там в шапке Vector3, string и int.
Создает структуру
public struct Wrapper
{
public Vector3 position;
public string name;
public int iValue;
}

Создаем лист типа этой структуры
List<Wrapper> list = new List<Wrapper>();

Вам это надо?
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Как объявить переменную с именем равным String?

Сообщение NOVA 18 июл 2017, 20:09

Да похоже на то. Кот в мешке кота, который в мешке кота по сути. Только как-то хотелось бы нормальный двумерный List. А словарь он какой-то хоть тип переменной содержит? Если представить его как таблицу String, int.
То есть берём такой string и такой int и получаем какой-то тип переменной со всеми параметрами. Или это уже вообще не двумерный массив? Не пора ли на матрицы переключаться?
Допустим имеем имя главного объекта, имеем его номер по порядку (в партии "едро", 10-тый человек слева), получаем его координаты x,y,z и name до кучи. А ещё обращаемся к его скрипту головного мозга и т.д.
Вроде как с нединамическими массивами работает это. Фиг с ними со strings, хотя бы два integer. Но в динамическом массиве.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как объявить переменную с именем равным String?

Сообщение Woolf 18 июл 2017, 20:42

А почему не сделать структуру, которая хранит и ваш GO и ваш Vector3, и хранить в листе сразу всю структуру?
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Как объявить переменную с именем равным String?

Сообщение NOVA 18 июл 2017, 20:50

Woolf писал(а):А почему не сделать структуру, которая хранит и ваш GO и ваш Vector3, и хранить в листе сразу всю структуру?

Ой а поподробнее?
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как объявить переменную с именем равным String?

Сообщение Anonymyx 18 июл 2017, 20:52

facepalm
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Как объявить переменную с именем равным String?

Сообщение snezhok_13 18 июл 2017, 20:59

Woolf правильно вам подсказывает) нужна структура, Dictionary Вам не нужна если не нужен поиск по этой строке. Если вы все время будете перебирать все объекты, то список структур то что вам нужно.

В C# можно так
Синтаксис:
Используется csharp
class MyClass {
  string Name;
  Vector3 Position;
}

List<MyClass> myList = new List<MyClass>();
Разработка игр, немножко игровая журналистика, сейчас делаем Календарь: даты выхода игр
Аватара пользователя
snezhok_13
UNIверсал
 
Сообщения: 450
Зарегистрирован: 09 сен 2013, 11:12
Skype: s.coremission
  • Сайт

Re: Как объявить переменную с именем равным String?

Сообщение NOVA 18 июл 2017, 21:02

Anonymyx писал(а):facepalm

List<Wrapper> list = new List<Wrapper>();
Вот это может быть и верное решение, я просто не понимаю как с этим работать. Тут три слова List в одной строке
Последний раз редактировалось NOVA 19 июл 2017, 05:17, всего редактировалось 2 раз(а).
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как объявить переменную с именем равным String?

Сообщение Anonymyx 18 июл 2017, 21:04

"list" - это просто имя листа.
А что непонятно? Как добавлять элементы?
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Как объявить переменную с именем равным String?

Сообщение NOVA 18 июл 2017, 21:08

Чорт возьми, опять я задумался и не ожидал верного ответа. Только что гуглил какие-то листы в листах. Всё понял. Буду пробовать. Спасибо.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

След.

Вернуться в Почемучка

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

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 18