Пятница, 29 Ноября 2024, 12:49

Приветствую Вас Гость

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

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг