Глобальный скрипт для всей игры
| |
alexsilent | Дата: Понедельник, 30 Июля 2018, 05:40 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Подумал, может есть лучше решение для создания всех глобальных переменных и функций для игры, чем мой костыль:
Я делаю так: 1) создаю префаб с именем Global 2) создаю скрипт Global и привязываю к префабу, в этом скрипте есть функция не удалять после загрузки 3) потом раскидываю по всем уровням эти префабы, чтобы тестировать независимо от того на какой локации находишься, 4) также в скрипте есть удаление всех копий, потому-что после перезагрузки уровня уже будут два клона префаба Global, и поэтому новый префаб удаляется
но это всё как-то костыльно
Неужели нет более нормального способа в Unity для создания глобальных функций, контроля игры и переменных?
Например скрипт, который не надо пихать в сцену, но там будет работать Update и FixedUpdate и функции и к которому всегда есть путь?!
Или может быть автоматическое создание скрипта/префаба, чтобы не расставлять везде эти префабы и не проверять клон?!
Сообщение отредактировал alexsilent - Понедельник, 30 Июля 2018, 05:45 |
|
| |
pixeye | Дата: Понедельник, 30 Июля 2018, 06:28 | Сообщение # 2 |
Red Winter Software
Сейчас нет на сайте
| Юнити тут вообще не причем : )
https://raw.githubusercontent.com/dimmpixeye/Actors-Unity3d-Framework/master/Assets/[0]Framework/LibSingleton/Singleton.cs
Код public class Toolbox : Singleton<Toolbox>{
public void Test(){ }
}
public class TestClass: Monobehavior{
Awake(){ Toolbox.Instance.Test(); } }
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
Сообщение отредактировал pixeye - Понедельник, 30 Июля 2018, 06:29 |
|
| |
pixeye | Дата: Понедельник, 30 Июля 2018, 06:33 | Сообщение # 3 |
Red Winter Software
Сейчас нет на сайте
| Цитата alexsilent ( ) Например скрипт, который не надо пихать в сцену, но там будет работать Update и FixedUpdate и функции и к которому всегда есть путь?!
Это чуть сложнее.
Но у меня как раз именно так : свои апдейты. Один из вариантов как этого достичь : иметь один компонент юнити который бы процессил твои апдейты.
https://raw.githubusercontent.com/dimmpixeye/Actors-Unity3d-Framework/master/Assets/[0]Framework/Processings/ProcessingUpdate.cs https://github.com/dimmpixeye/Actors-Unity3d-Framework/blob/master/Assets/[0]Framework/Components/ComponentUpdate.cs
Тебе для этого нужно понимать работу синглтонов и что такое интерфейсы в C#
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| |
alexsilent | Дата: Понедельник, 30 Июля 2018, 06:56 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| Цитата pixeye ( ) Код
public class Toolbox : Singleton<Toolbox>{
public void Test(){ }
}
public class TestClass: Monobehavior{
Awake(){ Toolbox.Instance.Test(); } }
pixeye, Я только C# начинаю изучать, поэтому код выглядит сложновато( Я перехожу с ЮнитиСкрипта и там вроде не было ни синглтонов, ни Instance не встречал. А можно в двух словах, что за Синглтон или как это работает? ЗЫ для не программиста (я художник, но освоил ЮнитиСкрипт, но беда с сишарпом я пока только перехожу и не всё знаю, но учебный материал смотреть по C# не очень полезно, ибо там будут рассказывать всё с нуля, а многие вещи такие же как и в ЯваСкрипте и поэтому это не мой вариант, много времени потратится на то что и так знаю, лучше бы акцентировать на том, чего нет в яваскрипте, но таких уроков я ещё не встречал.
Добавлено (30 Июля 2018, 07:00) --------------------------------------------- Видимо, если не разберусь с синглтонами (вообще по хорошему я хотел бы избегать сложных вещей программирования, ибо я не программист, сложные структуры не люблю в программировании, хорошо если их можно обойти), а если нет, то буду со старыми граблями работать)
Сообщение отредактировал alexsilent - Понедельник, 30 Июля 2018, 07:04 |
|
| |
pixeye | Дата: Понедельник, 30 Июля 2018, 08:04 | Сообщение # 5 |
Red Winter Software
Сейчас нет на сайте
| Цитата alexsilent ( ) pixeye, Я только C# начинаю изучать, поэтому код выглядит сложновато( Я перехожу с ЮнитиСкрипта и там вроде не было ни синглтонов, ни Instance не встречал. А можно в двух словах, что за Синглтон или как это работает? ЗЫ для не программиста (я художник, но освоил ЮнитиСкрипт, но беда с сишарпом я пока только перехожу и не всё знаю, но учебный материал смотреть по C# не очень полезно, ибо там будут рассказывать всё с нуля, а многие вещи такие же как и в ЯваСкрипте и поэтому это не мой вариант, много времени потратится на то что и так знаю, лучше бы акцентировать на том, чего нет в яваскрипте, но таких уроков я ещё не встречал.
Добавлено (30 Июля 2018, 07:00) --------------------------------------------- Видимо, если не разберусь с синглтонами (вообще по хорошему я хотел бы избегать сложных вещей программирования, ибо я не программист, сложные структуры не люблю в программировании, хорошо если их можно обойти), а если нет, то буду со старыми граблями работать)
Я буду с тобой предельно честным. Если хочешь этим заниматься изучать придется.
6) Ты синглтонами можешь пользоваться сходу просто скопировав этот код и реализовав в названии класса такой шаблон : ТвойТип : Singleton<ТвойТип> {} - он сам создаст тебе на сцене игровой объект при первом к нему обращении, пометит его как неуничтожаемый и не даст создать дополнительные копию. Именно не даст создасть а не это извращение с созданием/удалением.
1) Сложность программирования очень масштабируема - тебе крайне важно выучить хотя бы несколько паттернов. Твоя жизнь станет легче, а синглтон - очень простой концепт. 2) Это не вопрос программирования, а логики. Само слово Singleton - одиночка подразумевает создания чего либо в одном экземпляре. 3) Твои грабли будут гораздо багованее и как не странно сложнее в реализации и в конечном итоге ты потратишь гораздо больше времени. 4) Синглтон - это паттерн, его можно реализовать на любом языке ( ну или почти на любом, в нашем контексте - на любом ) 5) Instance - это просто название переменной, можешь ее назвать хоть Vasiliy
7) Отнесись к программированию с уважением : ) - Я понимаю что ты художник:) и если бы я пришел к тебе с вопросом как рисовать концепт арты с крутых игр ты бы вряд ли нашел что-то лучшее чем сказать мне учиться и практиковаться и в большом кол-ве, изучать анатомию, техники рисования и другие нюансы и паттерны коих так же много как и в программировании. 8) Реально лучший совет это найти партнера. Мне вот интересен арт. Это круто рисовать. Но мой партнер рисует по 8-12 часов в сутки каждый день чтобы делать тоже что и он мне уйдут годы. Он тоже не дурак и уверен что если бы тратил на программирование столько же времени сколько и я то смог бы писать игры но он понимает что у него на это уйдут годы : ) 9) Обрати внимание на BOLT - возможно он подойтет тебе.
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
Сообщение отредактировал pixeye - Понедельник, 30 Июля 2018, 08:08 |
|
| |
Otinagi | Дата: Понедельник, 30 Июля 2018, 08:38 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| А я создаю класс со статическими функцыями и данными. Может и криво, но меня вполне устраивает.
«Смерти меньше всего боятся те люди, чья жизнь имеет наибольшую ценность.» Иммануил Кант
|
|
| |
orkons | Дата: Понедельник, 30 Июля 2018, 13:20 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Цитата alexsilent ( ) но учебный материал смотреть по C# не очень полезно, ибо там будут рассказывать всё с нуля, а многие вещи такие же как и в ЯваСкрипте Сборник книг по C# и Unity https://yadi.sk/d/WaDmCVmG3ZN6G4
|
|
| |
Syank | Дата: Понедельник, 30 Июля 2018, 20:48 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Я себе сделал скрипт со статическими переменными. Они отлично справляются с задачей. Ту да же пишу общие методы. И не надо прописывать ссылки на объект. Прямо через класс обращаешься. Класс кстати тоже должен быть статическим, если не ошибаюсь.
|
|
| |
|