Добавлено (05 Октября 2019, 08:15) --------------------------------------------- Мне понравилось как реализовано у pixeye в Actors, где скрипты отдельно от переменных, но такое сложное программирование я не вывезу, мне нужно что-то полегче, но где тоже можно будет вводить свои переменные сколько хочешь для отдельного объекта, ну допустим я хочу для своего героя: HP, Life, Defense, Attack и прочие переменные.
И поэтому хочу сделать массив динамических переменных, то есть я не знаю сколько будет переменных, и в зависимости от обстоятельств я их сам буду вводить в виде массива, и незнаю как они будут называться заранее, но мне нужен быстрый доступ к ним из любого скрипта.
Поэтому у меня появились новые вопросы по С#:
1) Можно ли получить быстрый доступ к переменной Life, через String "Life"?
2) (и если первый вариант сложен) Можно ли создать массив переменных, где можно легко и быстро получить доступ к любой яйчейке массива по имени? И какой лучше всего массив для этого подходит? Я слышал что в C# очень много видов массивов, мне нужен очень быстрый + чтобы его можно было бы использовать до 1000 и более объектов одновременно.
3) В юнити скрипты запускаются в случайном порядке, поэтому всегда сложно предугадать, какой скрипт в каком порядке запускается, мне нравится больше, когда вся игра в одном скрипте написана, чтобы легко это контролировать было. Но в юнити это очень сложно всё запихать в один скрипт (включая и проверку коллизии). Можно ли как-то упорядочить, чтобы все скрипты всегда в точном порядке запускались? В юнити есть Order (порядок действий скриптов), но я не уверен будет ли это работать для сотни скриптов, и работает ли это для FixedUpdate и Update или только влияет на Awake и Start?
ничего личного, но ты программер (код же пишешь), просто очень плохой, пока что (а может и навсегда, с таким-то подходом)
Навсегда) я уже 19 лет так пишу код) хотя конечно прогресс есть, но он очень медленный, мне бы по хорошему, как дизайнеру и художнику, найти бы хороший конструктор, где уже всё готово и осталось только заполнить мир скриптами и объектами, не создавая первоначальный каркас, не думая как делать сохраняшки и прочее и прочее... Чисто скриптер уровней (лёгкие скрипты для уровней, интерактива, диалогов, персонажей) мне легко программировать, а когда надо ядро и основу игры, там я очень долго пилю всё.
Вот Bitsy и Axma мне понравились, что там всё сосредоточено на создании игрового мира, а не игрового ядра) Но это всё не заточено под нормальную графику)
Сообщение отредактировал alexsilent - Понедельник, 16 Сентября 2019, 16:06
Проблема в том, что они уже сделаны и даже протестированы на 40 раз, но на русских компах, и у меня просто сомнение недавно возникло, может не стоило это пилить, но уже поздно, теперь мне интересно, нормально ли будут русские буквы в японских реестрах работать, и какие ещё системные символы есть в String, чтобы их запретить в именах?!
Сообщение отредактировал alexsilent - Понедельник, 16 Сентября 2019, 13:36
drcrack, ну это не легко для меня, поскольку я не программер, то использую готовый инструмент, тем более сейчас какие-то сложности с сохранением, то есть нужно сохранять там, где разрешит виндовс, короче я не шарю в этом, я эти сложности не понимаю, и хочу простой и сокращенный код. Тем более непонятно как это будет себя вести на других платформах, на том же андроиде или Свитче, вдруг когда-нибудь повезёт переехать на другую платформу. Короче нюансов слишком много, когда сам пилишь.
Сообщение отредактировал alexsilent - Понедельник, 16 Сентября 2019, 06:16
1) Тут есть системный символ "\", который нельзя просто так писать в тексте, а какие ещё символы нельзя писать в String, на юнити? Или это только один вариант, и например обратный слэш "/" нормально работает?!
2) В PlayerPrefs.SetString если имя будет сохранено русским шрифтом на японском или китайском виндовсе, где не поддерживается шрифт, будет ли это нормально сохранено в реестре? Это мне нужно не для текста, а для сохранения в одном слоте до 100 цифр, как будто это байт (хотя вроде в байте 256 символов):
Код
private var Hex : String = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMйцукенгшщзхфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ"; function HexToInt (name : String) : int { if (name == null || name == "") { return 0; } var en : int = Hex.IndexOf(name); if (en > -1) { return en; } return 0; }
чтобы сократить например число 10 в одном слоте, я вместо этого пишу символ "q" в реестре в сохранении игры, а чтобы сохранить число 76, я пишу "ф" в реестре в сохранении игры, надеюсь на китайском виндовсе и реестре этот символ всё равно сохранится, даже если шрифт не поддерживается... Хочется узнать мнение экспертов, к сожалению в PlayerPrefs нет возможности большой ряд байтов сохранять, чтобы экономить место для сохранения инвентаря и кастомизации. Поэтому пытаюсь извращаться со String.
Сообщение отредактировал alexsilent - Понедельник, 16 Сентября 2019, 01:13
ну ващет предупредили года за 3 а потом постепенно вырезали поддержку xD
я начал писать свою игру в 2011-2012, когда выбирал каким языком пользоваться, и где-то до версии 2017 (наверное) не слышал такой инфы, ну я не особо часто бывал на официальном сайте, может что где пропустил
Цитатаdrcrack ()
нельзя, но никто не мешает иметь одну большую сцену только для разработки и специальный скрипт перед билдом копирует обьекты с этой сцены на маленькие продакшн сцены по крайней мере я так бы и сделал
Видимо придётся пользоваться старым методом или на префабы пилить
djwirtuoz, спасибо, но похоже это 2018.3, а у меня 2018.2 потому-что в 2018.3 они полностью отказались от JavaScript, а у меня вся игра написана на юнитискрипте (около 150-ти скриптов) Но всё равно прикольная фишка, может когда-нибудь (когда перепишу все свои скрипты на сишарп) поюзаю эту фичу.
ЗЫ выходит, что все новые фичи упираются в сишарп, надеюсь у разработчиков юнити есть список того, от чего они ещё в будущем откажутся, хочу глянуть этот список, чтобы не пользоваться этими вещами сразу, как получилось у меня с яваскриптом, я вообще случайно выбрал между C# и JS потому-что сказали, что легче JS, чем C#. И юнити настолько поддерживали JS, что даже назвали это UnityScript-ом, а потом выкинули на помойку внезапно
Сообщение отредактировал alexsilent - Четверг, 18 Июля 2019, 13:59
Думаю, сейчас над метроидванией, и у меня все комнаты на одном уровне находятся, потому-что так легче всё подземелье редактировать и так легче общее местоположение на карте высчитывать. Вопрос: можно ли частично загружать уровень, избирательно выбирая лишь некоторые объекты и не загружая все комнаты разом?
А то у меня пока такие грабли: весь уровень загружается, и это немного тормозит (чем больше комнат, тем медленнее грузит), а потом все комнаты, кроме одной выгружаются, я вот думаю, есть ли способ всего лишь эту одну комнату загружать и игнорируя другие, чтобы туда сюда не загружать-выгружать остальные комнаты
Добавлено (18 Июля 2019, 11:26) --------------------------------------------- можно было бы сделать так: префаб - это отдельная комната, и загружать сразу из ассетов но отдельные префабы редактировать неприятно, их вначале нужно на уровень поставить, чтоб редактировать, и потом удалять когда закончил редактирование
в этом случае Годот лучше ибо там каждый префаб можно отдельно редактировать не ставя на сцену, чтоб потом удалять, потому-что там префаб = сцена, но я привык к юньке (и там может быть много подводных камней, ибо я мало тестировал годот) и потому ищу в юнити способ удобного редактирования уровней и комнат
Сообщение отредактировал alexsilent - Четверг, 18 Июля 2019, 11:29
VS CODE ? не обязательно же студию юзать для юнити. vs code полегче будет
Точно, так я его и не попробовал) Спасибо!
Добавлено (06 Мая 2019, 07:18) ---------------------------------------------
Цитатаk0fe ()
Выбери параметр Browse... вместо Open By File Extension и найди exeшник Notepad++ Должно работать.
Алсо, здесь решение проблемы с редиректом на строчку кода с ошибкой в external редактор.
Это конечно всё старые решения, но всё равно Спасибо!
Я чуть погуглил и нашёл решения, но для версии 2019.2 это не работает (я ошибся когда писал вначале 2019.1, ибо мне важнее была последняя версия для теста), https://docs.unity3d.com/Manual/Preferences.html
Examples of script editor arguments Gvim/Vim: --remote-tab-silent +$(Line) "$File" Notepad2: -g $(Line) "$(File)" Sublime Text 2: "$(File)":$(Line) Notepad++: -n$(Line) "$(File)"
что для Sublime, что для Notepad++ оба решения не работают, видимо теперь там нужно что-то другое вводить с версии 2019.2, буду ждать документацию, и пользоваться пока другими версиями юнити...
Добавлено (06 Мая 2019, 08:11) --------------------------------------------- VS CODE, реально шикарен, открывается секунды 2, чуть дольше чем Notepad++, но да ладно) правда я пока не смог настроить VS Code так, чтоб юнити автоматически отправляла на ту строку, которая имеет ошибку, на которую я кликнул в дебагере юнити, а открывать целые проекты я вообще хз как, мне бы достаточно, чтобы перебрасывала ошибка на конкретную строку и всё... хз что писать в External Script Editor Args
Сообщение отредактировал alexsilent - Понедельник, 06 Мая 2019, 09:45
На моём слабом компе Visual Studio открывается минуту или чуть больше, это такой ад,
мне не нужны редакторы текста, которые открываются настолько долго, что MonoDevelop что VS открываются чертовски долго( а мне нужен всего-лишь редактор кода, просто редактор текста... почему в 2019-м году редакторы текста разрослись до размера графических приложений и открываются дольше чем фотошоп?
Даже на автозаполнение плевать, лишь бы во время отладки правильно на строку ошибки перебрасывал. И в этом случае Notepad++ отлично подходит, раньше работал Wrapper для Notepad++, который заменял MonoDevelop, но в 2019 версии это не работает, то есть не перебрасывает на строку ошибки, а так в принципе открывает,
есть ли способ работать с Notepad++ с помощью: Preferences->External Tools->External Script Editor->Open By File Extension ?
возможно нужно что-то прописать в External Script Editor Args но я не знаю что нужно, чтобы Notepad++ снова заработал?!
Добавлено (05 Мая 2019, 02:23) --------------------------------------------- и ещё этот Visual Studio просит создать учётную запись, это вообще сверх издевательства, ну я не люблю регистрироваться лишний раз, я и так в юнити регистрировался через силу( где нормальная альтернатива? неужели теперь все обязаны юзать VS? И как настроить, чтобы это было не обязательно?
Сообщение отредактировал alexsilent - Понедельник, 06 Мая 2019, 07:20
"We well rock you" - хотя бы потому-что всегда выходит что-то новое и хорошее и всё не перечислишь, но эта классика остаётся с самым приятным битом и ритмом.
Ищу движок или конструктор, который может распознавать речь и озвучивать текст, в приоритете бесплатный. А ещё лучше чтобы и на мобилы можно компилить, а не только на ПК. Хочу попробовать собрать свой "Skyrim: Very Special Edition" с блекджеком и Тоддом Говардом.
Сообщение отредактировал alexsilent - Суббота, 27 Апреля 2019, 09:04
pixeye, не сбегаю но расширяю инструментарий, мне в годот больше понравился пиксельарт, и вот только что (в этой теме) решил последнюю проблему с ним, чтобы в юнити сделать пиксельарт игру 120 на 64 пикселя, я замучаюсь, в юнити очень неудобно сделан инструментарий для PixelPerfect, но в 3D юнити намного лучше, так что я решил разделить: олдскульные игры буду писать на Godot, а остальные на Unity)
Ещё мне нравится, что GDscript динамический язык, а C# строгий, я не уверен можно ли в C# создать таблицы подобные языку Lua, мне очень нравятся быстрые динамические таблицы, которые не требуют много усилий и строк кода для инициализации и работы с таблицей.
Последний плюс у годота - мне не обязательно для создания синглтона иметь какой-то объект на уровне, чтобы из этого объекта инициализировать первый раз синглтон, в годот можно синглтон не вызывать из какого-нибудь объекта с уровня, а просто добавить в таблицу синглтонов.
Ну в остальном я всё также практикую юнити) и перелопачиваю все свои скрипты с ЯваСкрипта на C# (жаль юнити отказались от яваскрипта, могли бы хотя бы предупредить, что они потом откажутся от этого языка, чтоб я не учил тот язык и взял сразу бы C# несколько лет назад)
Самый большой пока минус в Годот - нет нормального редактора спрайтов, как в юнити. Чтобы мгновенно кучу спрайтов разных размеров нарезать и быстро проставить у каждого точку отсчёта (pivot).
Сообщение отредактировал alexsilent - Пятница, 12 Апреля 2019, 14:15
В Godot, можно ли сделать Pixelperfect прямо в окне редактора? В игре при запуске он имеется, но в редакторе приходится на глаз размещать объекты, есть ли там какой-то корректировщик пикселей?
Пытался загуглить, но меня в какие-то другие темы гугл уводит, просто про pixelperfect или уровни в целом.
Криво пиксели друг к другу подходят в редакторе, приходится каждый раз на глаз подравнивать или каждый раз лезть в Transform.
Сообщение отредактировал alexsilent - Пятница, 12 Апреля 2019, 06:26
Желаете в коммерческой игре сделать отсылку к другой игре или произведению, искажайте имя/пол/расу/вид персонажа, так чтобы фанаты могли узнать всё ещё, но нельзя было докопаться в суде. Во многих Японских аниме все логотипы искажены, например: "Zony Gamestation" "Noooogle" "Aaaple" и т.д.
Добавлено (09 Апреля 2019, 00:24) --------------------------------------------- Хотя меня прикалывает, что в мульте "Ральф 2" имя гугла не искажено, а имя продукта гугла ютюб было изменено. Это как-то странно смотрелось, я так и не понял из каких соображений они так поступили только наполовину исказив названия, а не полностью или вообще не меняя, если Дисней договорились с гуглом, короче хз.
Сообщение отредактировал alexsilent - Вторник, 09 Апреля 2019, 00:25
у тебя в юнити профайлер не работает или в чем вообще смысл этой темы
профайлер такие мелкие вычисления не делает, скажет что норм в любом случае, мне просто бы поточнее узнать как работает функция GetActive, с вычислениями или без
Сообщение отредактировал alexsilent - Среда, 03 Апреля 2019, 14:03
Я раньше всегда, для проверки, активен ли объект создавал дополнительные boolean переменные, ибо боялся, что GetActive() эта сложная функция, которая жрёт ресурсы, что-то дополнительно проверяя каждый кадр! Жрёт ли GetActive() ресурсы системы или это работает также быстро, как проверка boolean?
Если это хотя бы на миллисекунду дольше, то я тогда лучше буду и дальше дополнительные переменные создавать. Оптимизация очень важна.
Сообщение отредактировал alexsilent - Среда, 03 Апреля 2019, 12:43
У всех так, или только у меня такой баг? Ставлю подпись своему невидимому объекту, чтобы не потерять его. Но после того как открываю заново проект юнити, то все подписи пропадают, я думал вначале это из-за моего старого проекта, создал новый проект для тестирования, но там тоже самое.
Теряются все подписи, как у префабов, так и у обычных объектов на уровнях, но картинки не теряются, то есть если сделать label в виде картинки, то он сохранится.
Сообщение отредактировал alexsilent - Пятница, 29 Марта 2019, 04:52