HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Вопросы по Unity
А точнее по имплементации C#
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Вопросы по Unity

Вот вчера на хабре увидел какой-то простейший пример кода для Unity на C# и задумался. Собсно пример (псевдокод).

C++ Source Code:
1
using UnityEngine;
2
 
3
public class MyClass : MonoBehaviour
4
{
5
  void Update()
6
  {
7
  }
8
}

Во первых вызывает вопрос, какой-такой MonoBehavior и почему мы должны наследоваться именно от него? Если уж в данном случае С# - это часть Юнити, могли бы сделать какой-то специальный юнити-класс и наследоваться от него.
Во вторых, что означает using UnityEngine? Это неймспейс какой-то? Я не очень хорошо знаю C#.
В третьих, где тут инстансы? Ну хорошо мы создали класс и он автомагически попал на экран, путём некоторых настроек. А если мне надо этот объект несколько раз поставить в разных местах, когда как?
В четвертых - сеть. Если Update автоматически означает и рендер и физику, как устроена сетевая интеракция?
В пятых - как тут вообще устроена связь между скажем физикой и рендерингом? Тоже всё в рамках функции Update? А какие-то другие функции, которые дёргает движок, тут имеются?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 214974

Старое сообщение 02-08-2023 05:19
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
C++ Source Code:
1
using UnityEngine;
2
 
3
public class MyClass : MonoBehaviour
4
 
5
{
6
  void Update()
7
  {
8
  }
9
}



По сути ты просто обращаешься к MonoBehaviour из UnityEngine чтобы он мог вызывать твои апдейты.



1. https://docs.unity3d.com/ScriptRefe...oBehaviour.html
Наследоваться от него не обязательно, просто так скрипт будет гарантировано вызван самим движком, в других случаях тебе нужно будет вызывать его вручную.
2. https://learn.microsoft.com/en-us/d...using-directive
Через using ты подключаешь библиотеки. Скорее что то вроде include.
Например ты можешь написать using System и получить уже доступ к обычному интерфейсу шарпа для работы с операционной системой
3. https://docs.unity3d.com/ScriptRefe...nstantiate.html
Но вообще с т.з. Юнити у тебя объект создается со своей копией скрипта для него лично, если тебе это нужно. Например тот же класс Transform или Mesh Render. Конечно при условии что объект находится на сцене. Если такового нигде нет, то твой MonoBehaviour не будет вызван
4. https://docs.unity3d.com/Manual/ExecutionOrder.html
Update это стек вызова чего либо. Это не сеть и не рендер, это просто таймер. Update вызывает код каждый кадр рендера, FixedUpdate каждый кадр физического движка. Всё это можно настраивать внутри самой Юнити, например если тебе не хватает точности физики, ты можешь увеличить количество кадров для неё.
5. См. п.4 По большей части всё разруливается внутри Юнити, пользователю доступны только интерфейсы. Но при желании ты можешь написать и свой рендер с физикой, Юнити это позволяет.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 02-08-2023 в 07:32

Сообщить модератору | | IP: Записан
Сообщение: 214975

Старое сообщение 02-08-2023 07:17
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Конечно при условии что объект находится на сцене

А как юнити поймёт что MyClass находится на сцене?

Цитата:
FiEctro писал:
Update вызывает код каждый кадр рендера, FixedUpdate каждый кадр физического движка.

А сеть?

Цитата:
FiEctro писал:
Но при желании ты можешь написать и свой

Я ждал что ты это скажешь

Добавлено 02-08-2023 в 13:37:

Впрочем, я нашёл там какой-то класс сети, но он только для игрока.
А как же выполняется синхронизация остальных объектов?

Добавлено 02-08-2023 в 13:38:

C++ Source Code:
1
using UnityEngine;
2
using UnityEngine.Serialization;
3
 
4
public class MyMonster : MonoBehaviour
5
{
6
  [FormerlySerializedAs("hitpoints")]
7
  public int health;
8
}

Экая хрень.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 214977

Старое сообщение 02-08-2023 10:38
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
А как юнити поймёт что MyClass находится на сцене?


Узнает если он висит на объекте который стоит на сцене.

Я говорю про класс MonoBehaviour. Если он привязан к какому то объекту на сцене, то выполняется. Если у тебя просто класс без MonoBehaviour и не находится нигде на сцене, то тебе нужно его откуда то принудительно вызвать, например из скрипта с MonoBehaviour который висит на объекте на сцене. Типа как Init() функция в HLSDK.
Ты спросишь - а зачем это? Всё просто, скрипты MonoBehaviour могут выполняться и в IDE, и ещё по всякому, чтобы они не конфликтовали и не перебивали друг друга, их привязывают к сцене. Если тебе вдруг понадобится поменять сцену, то ты можешь перенести твой объект в Dont destroy on load, и тогда он не будет удален при смене сцены. Таким же образом мы когда то делали систему ченжлевелов аля ХЛ

Цитата:
Дядя Миша писал:
А сеть?


Сеть в Юнити это отдельный движок живущий своей жизнью. Networking или Unet его ещё называют. Раньше он был частью Юнити, а теперь подключается как отдельный ассет.

https://docs.unity3d.com/Manual/UNet.html

Но сейчас он переживает не лучшие времена и практически не обновляется. Короче очередной deprecated. Но пока работает.

На смену ему сделали Mirror:
https://mirror-networking.com/

Это что то вроде Ксаша для Unet. Т.е. по сути это отревершенный Unet который сейчас допиливается и обновляется в отличие от оригинала. Он имеет так же свой пайплайн, где ты указываешь что и в какой момент передавать клиенту и серверу. Уже точно не помню, мультиплеер мне не так интересен. Но на том сайте есть документация, если интересно можешь глянуть:
https://storage.googleapis.com/mirr...html/index.html

Грубо говоря ты так же вешаешь класс мультиплеера на объект на сцене, задаешь ему параметры сети, и уже можешь обращаться к нему из Юнити откуда угодно. Предиктинг там кстати тоже есть.

Вот тут можешь глянуть как это всё добро настраивается:
https://habr.com/ru/articles/549018/
Сразу скажу что по мне это не очень удачная реализация, и настройка мультиплеера в Юнити довольно низкоуровневая. Но в целом логичная если разобраться.

Цитата:
Дядя Миша писал:
Экая хрень.


Это вообще не то. Тут ты переименовываешь название переменной в инспекторе.

Цитата:
Дядя Миша писал:
Я ждал что ты это скажешь


Юнити модульный движок, при желании ты можешь заменить какую то его часть под себя, только далеко не всегда и не всем это нужно.

Цитата:
Дядя Миша писал:
А как же выполняется синхронизация остальных объектов?


Им предоставляется отдельный класс, который можно настроить индивидуально для каждого объекта. Вроде как это можно автоматизировать.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 02-08-2023 в 11:38

Сообщить модератору | | IP: Записан
Сообщение: 214978

Старое сообщение 02-08-2023 12:01
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Узнает если он висит на объекте который стоит на сцене.

Как эта привязка осуществляется? В текстовом виде как-то?

Цитата:
FiEctro писал:
Всё просто, скрипты MonoBehaviour могут выполняться и в IDE, и ещё по всякому, чтобы они не конфликтовали и не перебивали друг друга, их привязывают к сцене.

Ага, т.е. при смене уровня эти объекты автомагически удаляются, так?
У меня есть аналогичный механизм, но он устроен иначе.

Цитата:
FiEctro писал:
Это вообще не то.

Это пример сериализации я привёл.

Цитата:
FiEctro писал:
при желании ты можешь заменить какую то его часть под себя

Там не при желании, там по факту и не можешь, а придётся обязательно и не какую-то часть, а абсолютно все части, ну может быть кроме редактора.

Добавлено 02-08-2023 в 15:20:

А сетью вообще очень странно получилось. Куча решений и все глючные.
При том что сеть-то в принципе не менялась с начала нулевых - там всё те же решения используются. Две сервер-клиентские модели и всё.
Одна с минимальной задержкой, другая позволяет иметь на сервере тысячи игроков.

Добавлено 02-08-2023 в 15:23:

C++ Source Code:
1
public class Player : NetworkBehaviour //даем системе понять, что это сетевой объект
2
{
3
  void Update()
4
  {
5
  }
6
}

С чисто логической точки зрения наследование от каких-то встроенных объектов очень и очень стрёмное. Хотя на первый взгляд кажется удачным.

Но вообще неплохо. В Юнити есть понятие сцены, оказывается. Я думал там сцена и объекты вообще никак не связаны - всё надо руками дропать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 214981

Старое сообщение 02-08-2023 12:23
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
Как эта привязка осуществляется? В текстовом виде как-то?


В редакторе ставишь, заходишь в объект и вешаешь на него твой скрипт в инспекторе.

Цитата:
Дядя Миша писал:
Там не при желании, там по факту и не можешь, а придётся обязательно и не какую-то часть, а абсолютно все части, ну может быть кроме редактора.


Тебе всяко виднее.

Цитата:
Дядя Миша писал:
Куча решений и все глючные.


И в чем эта глючность заключается?

Цитата:
Дядя Миша писал:
В Юнити есть понятие сцены, оказывается. Я думал там сцена и объекты вообще никак не связаны - всё надо руками дропать.


Там целый менеджер сцен лол. Есть ещё бандлы, это типа как .pak файлы в третьей кваке.

Цитата:
Дядя Миша писал:
Это пример сериализации я привёл.


Ну в данном примере ты работаешь с инспектором, это чисто для удобства. Например если ты в инспекторе хочешь видеть что у тебя творится со значениями приватных переменных.

Цитата:
Дядя Миша писал:
С чисто логической точки зрения наследование от каких-то встроенных объектов очень и очень стрёмное. Хотя на первый взгляд кажется удачным.


Наверное, но оно удобно тем что нигде не надо твой класс прописывать кроме как в твоём собственном скрипте.

Цитата:
Дядя Миша писал:
Ага, т.е. при смене уровня эти объекты автомагически удаляются, так?


Да, удаляются. Уже из коробки.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 02-08-2023 в 12:36

Сообщить модератору | | IP: Записан
Сообщение: 214982

Старое сообщение 02-08-2023 12:26
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



C++ Source Code:
1
[SyncVar(hook = nameof(SyncHealth))] //задаем метод, который будет выполняться при синхронизации переменной
2
int _SyncHealth;
3
 
4
//метод не выполнится, если старое значение равно новому
5
void SyncHealth(int oldValue, int newValue) //обязательно делаем два значения - старое и новое.
6
{
7
  Health = newValue;
8
}

Не хотели строчки в delta.lst сортировать? Вот будете эту хрень прописывать )

Добавлено 02-08-2023 в 15:36:

Цитата:
FiEctro писал:
В редакторе ставишь, заходишь в объект и вешаешь на него твой скрипт в инспекторе.

Это понятно. Ты сам текстовый скрипт сцены никогда не открывал разве? Не любопыцтвовал как оно там выглядит?

Цитата:
FiEctro писал:
Тебе всяко виднее.

Не мне а авторам Escape From Tarkov. Это они такое сказали.

Цитата:
FiEctro писал:
И в чем эта глючность заключается?

Ну ты же сам привёл ссылку на статью - там автор жалуется что всё глючное.
Это ведь следует из самого кол-ва наличия стольких решений. Если бы было одно нативное, которое бы всех устраивало - кто бы стал создавать новые?

Цитата:
FiEctro писал:
Там целый менеджер сцен лол

В чём заключается менеджмент сцен?

Цитата:
FiEctro писал:
Есть ещё бандлы, это типа как .pak файлы в третьей кваке.

А, да это в любом движке есть. Смысл в том, что винда на открытие любого файла тратит порядка ~10ms даже на SSD. А игровой архив позволяет убрать все эти задержки.

Цитата:
FiEctro писал:
Ну в данном примере ты работаешь с инспектором, это чисто для удобства.

Да, но как механизм сериализации поймет, что я хочу сохранить? Вот через это имя кокрас-токе.

Цитата:
FiEctro писал:
но оно удобно тем что нигде не надо твой класс прописывать.

В Юнити же вроде до сих пор не было готовых полноценных примеров?
Ну скажем реализация 3Д шутера с исходным кодом на C# от разработчиков? Чтобы там значит был игрок с прыжками, монстр, дверь и бронька. Ну и ротатабля опционально.

Добавлено 02-08-2023 в 15:39:

FiEctro у меня к тебе небольшая просьба будет. Ты же вроде пытался воссоздать физику игрока из халфы на Юнити? Скинь мне этот исходник на сишарпе, ну или необязательно его, а просто нечто похожее.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 214983

Старое сообщение 02-08-2023 12:39
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
Не хотели строчки в delta.lst сортировать? Вот будете эту хрень прописывать )


Объясни мне тупому, зачем нужен вообще этот дельта лист.

Цитата:
Дядя Миша писал:
Это понятно. Ты сам текстовый скрипт сцены никогда не открывал разве? Не любопыцтвовал как оно там выглядит?


Неа, но если хочешь могу посмотреть.

Цитата:
Дядя Миша писал:
Не мне а авторам Escape From Tarkov. Это они такое сказали.


Авторы Эскейп фром Тарков использовали пайплайн HDRP на заре его развития, с тех пор много воды утекло и HDRP серьёзно допилили, может даже с их помощью.

Цитата:
Дядя Миша писал:
Ну ты же сам привёл ссылку на статью - там автор жалуется что всё глючное.
Это ведь следует из самого кол-ва наличия стольких решений. Если бы было одно нативное, которое бы всех устраивало - кто бы стал создавать новые?


Как я говорил там довольно низкоуровневая настройка, и легко напортачить. Когда я ковырял там ничего не глючило, но потом забросил это дело, т.к. мультиплеер мне не в приоритет.

Цитата:
Дядя Миша писал:
В чём заключается менеджмент сцен?


Управление сценами, какая из них загрузится при старте игры, выгрузка и загрузка новой сцены, загрузка сцен из бандла, получение информации о сцене и т.д.

Цитата:
Дядя Миша писал:
А, да это в любом движке есть. Смысл в том, что винда на открытие любого файла тратит порядка ~10ms даже на SSD. А игровой архив позволяет убрать все эти задержки.


Насчет ресурсов хз, не замерял. А вот не бинарные Жсоны приятно удивили своей скоростью. Их как раз для сохранений использовал. А так Юнити срёт сейвы в реестр, что по мне не очень удачное решение.

Цитата:
Дядя Миша писал:
В Юнити же вроде до сих пор не было готовых полноценных примеров?
Ну скажем реализация 3Д шутера с исходным кодом на C# от разработчиков? Чтобы там значит был игрок с прыжками, монстр, дверь и бронька. Ну и ротатабля опционально.


Unity FPS Sample на гитхабе есть. Он жирный довольно в плане ресурсов.
https://github.com/Unity-Technologies/FPSSample

Качай через черепаху, через браузер у гитхаба ограничение на размер файла, он тебе все поломает.

Цитата:
Дядя Миша писал:
Да, но как механизм сериализации поймет, что я хочу сохранить? Вот через это имя кокрас-токе.


Ну такое..

Цитата:
Дядя Миша писал:
FiEctro у меня к тебе небольшая просьба будет. Ты же вроде пытался воссоздать физику игрока из халфы на Юнити? Скинь мне этот исходник на сишарпе, ну или необязательно его, а просто нечто похожее.


Оно на стадии эксперимента было и имело много багов, короче говнокод. Сейчас я использую ИК плеер контроллер из платного ассета, который меня удовлетворяет всем по большей части. Может когда нибудь вернусь, к моей реализации, но не скоро. У меня было много идей и планов на него.


Вот можешь этот попробовать:
https://github.com/WiggleWizard/qua...er/CPMPlayer.cs
или это
https://github.com/Olezen/UnitySourceMovement
или это
https://github.com/MaciejSzybiak/q2unity

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 02-08-2023 в 13:05

Сообщить модератору | | IP: Записан
Сообщение: 214984

Старое сообщение 02-08-2023 12:53
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Объясни мне тупому, зачем нужен вообще этот дельта лист.

Ну не было в халфе скриптовых языков. Прикрутили вот такой вот суррогат по-быстрому.

Цитата:
FiEctro писал:
но если хочешь могу посмотреть.

Скинь какую-нибудь мини-сцену, ну там пол, кубик, такого плана.

Цитата:
FiEctro писал:
HDRP серьёзно допилили

А что это?

Цитата:
FiEctro писал:
Управление сценами, какая из них загрузится при старте игры, выгрузка и загрузка новой сцены, загрузка сцен из бандла, получение информации о сцене и т.д.

Ну стандартно вообщем.

Цитата:
FiEctro писал:
А вот не бинарные Жсоны приятно удивили своей скоростью

Грубо говоря - первая квака сериализует свое состояние в джейсоны. Ну почти в джейсоны - там нет двоеточия. Но скорость их парсинга откровенно бесит, когда на сцене кол-во объектов несколько тысяч.
Т.е. это не джейсоны такие быстрые - это современные процессоры такие быстрые, что на первый взгляд даже не видно разницы. Ну а так-то. Вон весь третий дуум на текстовых форматах - это даже в 2004-м не сказать, чтобы было совсем больно.

Цитата:
FiEctro писал:
Юнити срёт сейвы в реестр

Очевидно предполагалось что там будут сохраняться какие-то глобальные значения, типа достижений или набранного кол-ва очков.

Цитата:
FiEctro писал:
Unity FPS Sample на гитхабе есть

Спасибо, посмотрю.

Цитата:
FiEctro писал:
Оно на стадии эксперимента было и имело много багов, короче говнокод

Для моих задач это не имеет значения. Мне бы просто посмотреть попытки адаптации чисто сишного кода из кваки на шарп для Юнити. А работает оно или нет - неважно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 214987

Старое сообщение 02-08-2023 13:23
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
Для моих задач это не имеет значения. Мне бы просто посмотреть попытки адаптации чисто сишного кода из кваки на шарп для Юнити. А работает оно или нет - неважно.


Сишный код я не адаптировал там от слова совсем. По той причине что я плохо ориентируюсь в сишном коде кваки. Тамошняя работа с указателями для меня это смерть. Вообще душная хрень эти указатели.

Цитата:
Дядя Миша писал:
Скинь какую-нибудь мини-сцену, ну там пол, кубик, такого плана.


Хорошо, буду дома, скину.

Цитата:
Дядя Миша писал:
А что это?


Отдельный рендер с графическими плюшками. У Юнити их 3: стандартный, URP, HDRP.

Цитата:
Дядя Миша писал:
Т.е. это не джейсоны такие быстрые - это современные процессоры такие быстрые, что на первый взгляд даже не видно разницы.


Ну вот раньше я сидел на Гейм мейкере, и там с текстового жсона что то грузить полная жопа.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 02-08-2023 в 13:34

Сообщить модератору | | IP: Записан
Сообщение: 214988

Старое сообщение 02-08-2023 13:28
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



FiEctro Благодарю. И последний вопрос. Вот ты используешь свой CharacterController. Замерял ли ты, как меняется фпс если его отключить?
Ну то есть вообще влияет ли исполнение СиШарпа на общий фпс в игре?
Или может быть СиШарп в отдельном потоке выполняется, поэтому не влияет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 214989

Старое сообщение 02-08-2023 13:34
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
Вот ты используешь свой CharacterController. Замерял ли ты, как меняется фпс если его отключить?


Надо в профайлере смотреть, да думаю почти никак, ты просто даешь команды физдвижку, а он уже двигает ригидбоди сам. Некоторые более сложные контроллеры строют БСП дерево для коллизии и там уже нагрузка посерьёзнее, но я вообще хз для чего эта черная магия.

Цитата:
Дядя Миша писал:
Ну то есть вообще влияет ли исполнение СиШарпа на общий фпс в игре?


Влияет только то что ты напишешь. Например если ты разом захочешь миллион ригидбоди заспавнить, конечно на несколько секунд всё зафризит. Но скрипты Юнити умеют в многопоточность да, хоть и с некоторыми ограничениями.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 02-08-2023 в 13:47

Сообщить модератору | | IP: Записан
Сообщение: 214990

Старое сообщение 02-08-2023 13:35
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Некоторые более сложные контроллеры строют БСП дерево для коллизии и там уже нагрузка посерьёзнее

Ну да, вот я про такие случаи как раз и говорю - когда реализация именно на Шарпе.

Добавлено 02-08-2023 в 16:51:

Цитата:
FiEctro писал:
но я вообще хз для чего эта черная магия

Конвексные примитивы внутри солидные, в отличие от полигонов. Это может оказаться очень удобным.

Цитата:
FiEctro писал:
захочешь миллион ригидбоди заспавнить

Сильно сомневаюсь, что Юнити даст заспавнить миллион ригидбоди.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 214992

Старое сообщение 02-08-2023 13:51
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



Цитата:
Дядя Миша писал:
Сильно сомневаюсь, что Юнити даст заспавнить миллион ригидбоди.


Да тут вроде как на это лимитов нет, но скорее всего просто вылетит. Но вообще объекты в Юнити хорошо оптимизированы, их может быть на сцене очень много.

Цитата:
Дядя Миша писал:
Ну да, вот я про такие случаи как раз и говорю - когда реализация именно на Шарпе.


У Юнити есть CPP компилятор, он позволяет получить некий прирост, за счет компиляции в обычный Си++ код, но если честно различие в производительности между обычной интерпретацией шарпов не шибко большие.

Цитата:
Дядя Миша писал:
Скинь какую-нибудь мини-сцену, ну там пол, кубик, такого плана.


Это не кубик с полом, тут разное. Но думаю так даже лучше.

Вложение: newscene.zip (11.6 кб)
Этот файл был скачан 221 раз.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 02-08-2023 в 16:32

Сообщить модератору | | IP: Записан
Сообщение: 214994

Старое сообщение 02-08-2023 16:41
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



C++ Source Code:
1
RenderSettings:
2
m_ObjectHideFlags: 0
3
serializedVersion: 9
4
m_Fog: 1
5
m_FogColor: {r: 0.5518868, g: 0.7493604, b: 1, a: 1}
6
m_FogMode: 3
7
m_FogDensity: 0.006
8
m_LinearFogStart: 0
9
m_LinearFogEnd: 300
10
m_AmbientSkyColor: {r: 0.6415094, g: 0.34457216, b: 0.13011748, a: 1}
11
m_AmbientEquatorColor: {r: 0.38861695, g: 0.48100185, b: 0.6698113, a: 1}
12
m_AmbientGroundColor: {r: 1, g: 1, b: 1, a: 1}
13
m_AmbientIntensity: 3.31
14
m_AmbientMode: 3
15
 

Сразу квака вспомнилась. Вероятно эти настройки в Unity появились еще в 2005-м.
C++ Source Code:
1
GameObject:
2
m_ObjectHideFlags: 0
3
m_CorrespondingSourceObject: {fileID: 0}
4
m_PrefabInstance: {fileID: 0}
5
m_PrefabAsset: {fileID: 0}
6
serializedVersion: 6
7
m_Component:
8
- component: {fileID: 130744732}
9
- component: {fileID: 130744731}
10
- component: {fileID: 130744730}
11
m_Layer: 0
12
m_Name: EventSystem
13
m_TagString: Untagged
14
m_Icon: {fileID: 0}
15
m_NavMeshLayer: 0
16
m_StaticEditorFlags: 0
17
m_IsActive: 1
18
--- !u!114 &130744730

Тут новые объекты начинаются после ключевого слова с двоеточием. Плохо что эти fileID абсолютно нечитабельны.
C++ Source Code:
1
MonoBehaviour:
2
m_ObjectHideFlags: 0
3
m_CorrespondingSourceObject: {fileID: 0}
4
m_PrefabInstance: {fileID: 0}
5
m_PrefabAsset: {fileID: 0}
6
m_GameObject: {fileID: 927058086}
7
m_Enabled: 1
8
m_EditorHideFlags: 0
9
m_Script: {fileID: 11500000, guid: 8e6fa5f2e7607459ba395388ad01d8f5, type: 3}
10
m_Name:
11
m_EditorClassIdentifier:
12
m_CubeMesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
13
--- !u!114 &927058092

Вероятно вот это описание подтягивает какой-то класс из шарпа, а GUID в параметре m_Script, как раз и отвечает за его имя. Ну точнее тут MD5 чексумма или что-то вроде этого. Опять-таки, без редактора здесь делать нечего.
Объекты свалены в кучу, т.е. среди чисто движковых объектов, видимо таких как коллайдеры, трансформы, лайты, попадаются и объекты, написанные юзером.
А в юнити есть иерархичность? Ну скажем вложить лайт в какой-нибудь лифт, чтобы он ездил вместе с ним.

Добавлено 02-08-2023 в 22:25:

Для человека, привыкшего мыслить категориями той же Кваки, объект - это нечто законченное и полезное. Ну скажем монстр или ротатабля. На худой конец - функ_валл, сценарная стенка.
А тут сваленые в кучу коллайдеры, трансформы. Вообще идея иметь трансформ отдельно объекта довольно любопытная. Как я понимаю, к одному и тому же трансформу можно нацепить сразу кучу объектов и они окажутся как бы связаны между собой. Однако это не снимает вопрос о корректной физической симуляции.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 215000

Старое сообщение 02-08-2023 19:25
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 15:41. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Вопросы по Unity
А точнее по имплементации C#
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024