Двумерный массив называется map
Map != двумерный массив. Двумерный массив может как угодно хранить значения, а map а) хранит их парами b) эти пары представлены как ключ-значение. Это разные структуры данных. Ты не можешь в мапе хранить позицию в виде row-column, потому что keys в map должны быть уникальны.
Пусть игрок хранит своё имя сам как приватную переменную, имеет публичный метод getName и через ForEach вызываешь также публичный SetName. Если все игроки в одном контейнере, то вытягиваешь из контейнера ноду GetAllChildren, которая возвращает тебе все объекты, которые содержатся под контейнером одним массивом. Если там не только игроки, то обрабатываешь возвращаемый массив так, как тебе нужно(кастишь или по does implement interface). Я не знаю, должны ли у тебя они меняться местами или один раз делаешь расстановку, но судя по исходным данным, моя реализация выглядит более лаконичной.
столкнулся с этим
нет, они не должны меняться местами. Но их может быть больше или меньше
А зачем иметь приватное имя, но иметь паблик гет/сет, которые явно никак не используют дополнительную логику, а просто превращают прайват переменную в паблик?) Вопрос не серьезный, а философский о подходе к «инкапсуляции»
Если нужен прям двумерный массив, можешь сделать кастомную вложенную структуру. Или если совсем костыльно, можешь хранить позицию в таблице(пару значений) как неупорядоченные пары в переменной Vector2D, правда там флоаты и она совсем не для этого предназначена.
да не, мне как раз именно get all children подходит как нельзя кстати
Это один из принципов ООП - доступ к приватным переменным осуществляется через публичные методы. Так ты гарантируешь, что ничто вне класса не изменит данных в классе
а где это включается?
На самом деле очень справедливый комментарий выше, публичный сэттер без дополнительной логики и публичная переменная концептуально ничем друг от друга не отличаются И очень хорошо замечено, что подобный публичный сеттер как раз таки ничего не гарантирует
Иван ты сильно хардкодишь, у тебя должен был быть один Text box с логикой и далее ты его бы поместил например в wrap box, ты нарушаешь ООП подход, и у тебя вероятно будут траблы с UI на разных устройствах, если ты в BP начинаешь делать некие однотипные штуки - значит подход не верный.
У большинства переменных и функций класса есть спецификатор доступа, он в окне details меняется. Бывает private, public и protected. У переменных нет protected, именно в анриле.
Согласен. Мне кажется, ему массив структур лучше организовать
я пока учусь и пытаюсь добиться промежуточного результата. Это довольно нужна сейчас штука, я хочу чтобы она работала, когда понадобится. Если будет время я допилю до красивого варианта. Понимаю, что это не правильно. Пока не знаю как организовать красивее, я долго соображаю)
Если для такой задачи хочешь применить подобие массива и если я правильно понял по первому скрину - может подойти Map, у которой первое значение - команда (например, enum), а второе - обычный массив имён (строк)
Спасибо за совет, я его реализую на днях
Мне вроде подходит get all children
Но совет выше лучше моего)
Обсуждают сегодня