| 
	
		
		
			| Глобальный скрипт для всей игры |  |  |  | 
| 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 |  |   участник Сейчас нет на сайте | Я себе сделал скрипт со статическими переменными. Они отлично справляются с задачей. Ту да же пишу общие методы. И не надо прописывать ссылки на объект. Прямо через класс обращаешься. Класс кстати тоже должен быть статическим, если не ошибаюсь.
 |  |  |  |  |  
 |