2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|
1 | |
Многопоточный сокет и Создание объектов в Unity13.04.2018, 00:52. Показов 2774. Ответов 25
Метки нет (Все метки)
Добрый день ! Так я и не нашел реализации .
У меня сокет . Чтение данных происходит в другом потоке . После обработки данных пытаюсь создать объект или сцену и получаю : LoadSceneAsyncNameIndexInternal can only be called from the main thread. или get_isActiveAndEnabled can only be called from the main thread. Как с этим бороться ?
0
|
13.04.2018, 00:52 | |
Ответы с готовыми решениями:
25
Unity 5. Как сделать создание и удаление объектов Деформация объектов в Unity Отслеживание объектов Vuforia и Unity Координаты дочерних объектов в Unity |
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
13.04.2018, 12:02 | 2 |
Создавать очередь в основном и передавать из потока в контроллер сцены
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|
13.04.2018, 16:39 [ТС] | 3 |
Queue<Action> ?? а есть пару примеров ?
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|
14.04.2018, 19:27 [ТС] | 4 |
нашел такой подход ( правда на java ) https://devtribe.ru/p/unity/unity-multithread
Я так же пытался синхронизировать через lock . но не вышло ((
0
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
14.04.2018, 19:34 | 5 |
Но там же всё просто, как три копейки...
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|
14.04.2018, 19:35 [ТС] | 6 |
https://answers.unity.com/ques... aging.html
И как первое только на C# http://www.unity3d.ru/distribu... =5&t=33905 Просто не могу понять как это работает .
0
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
14.04.2018, 20:19 | 7 |
С понятием "делегат" знаком? Что такое System.Action знаешь?
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|||||||||||
14.04.2018, 20:28 [ТС] | 8 | ||||||||||
Да . Просто допустим у меня 2 сокета . т.е 2 дополнительных потока . Как я понял из статьи что создается Список методов . Потом поток тормозится . потом в Update происходит проверка на методы и они выполняются .
Добавлено через 2 минуты вот мой класс Socket
Просто я пытаюсь понять на каком этапе внедрить этот способ . Вот допустим обработка в синглтоне того что пришло
0
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
14.04.2018, 20:30 | 9 |
Список делегатов. Из потока блокируется список (потокобезопасность), добавляется делегат, разблокируется список. В апдейте твой скрипт-компонент блокирует список, проверяет его и вызывает его делегаты (это уже майн тред, всё в порядке) и разблокирует после этого список.
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|
14.04.2018, 20:31 [ТС] | 10 |
Т.е получается что если данные переданы из другого потока . то все действия по обработке так же будут в другом потоке .
Т.е надо произвести синхронизацию на уровне приема данных с сокета и обрабатывать даннные в основном потоке .
0
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
14.04.2018, 20:33 | 11 |
Анонимный делегат ()=>{GameController.Instance.AddChatMessage(fromPlayer, textPlayer);} сработает как надо, хоть и параметры из потока заданы
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|
14.04.2018, 20:44 [ТС] | 12 |
Хотя по идее можно в моем Классе socket сделать лист грубо говоря событий. и передавать уже их
Добавлено через 1 минуту Только мой класс надо добавить MonoBehaviour . И воткнуть Update
0
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
14.04.2018, 20:53 | 13 |
Контроллер должен быть в майн потоке.
Добавлено через 41 секунду Из потока в контроллер передавать делегат, чтобы вызов был из майна. Добавлено через 26 секунд Пофиг где назначен делегат, важна точка вызова его.
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
||||||||||||||||
16.04.2018, 00:43 [ТС] | 14 | |||||||||||||||
Надо будет покрутить и посмотреть что выйдет . Основной принцип я понял . Добавлено через 4 часа 8 минут Походу не прокатит в одном классе
Не оставляю надежду )))
0
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
16.04.2018, 09:21 | 15 |
Апдейты вызываются только из монобеха
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|||||||||||||||||||||
17.04.2018, 01:01 [ТС] | 16 | ||||||||||||||||||||
У меня раскоменчен Моно . Но Update не запускается . Для проверки в апдайт записал дебаг . но походу апдате не включается . Может надо не как класс запускать ?
Ну объявил я так
InvalidOperationException: Operation is not valid due to the current state of the object System.Collections.Generic.Queue`1[SocetConnect+Task].Peek () System.Collections.Generic.Queue`1[SocetConnect+Task].Dequeue () SocetConnect.Update () (at Assets/Scripts/net/SocetConnect.cs:62) Добавлено через 1 час 22 минуты Вот так заработало . Но теперь косяк в том что при запуске приложения ЦП грузится до 100% .
0
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
17.04.2018, 10:53 | 17 |
Marchcat, профайлер на кого показывает?
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
||||||
17.04.2018, 19:01 [ТС] | 18 | |||||
А про него то я и забыл вчера . Сейчас на работе . Я вчера убрал в заголовок
Добавлено через 2 часа 47 минут Мне кажется что проблема в том что сокеты не уничтожаются. У меня получается так что когда на сцене щелкаю вход . С начало конектимся к серверу который нам выдает список серверов . Потом надо его закрыть . После коннектимся по списку . Если персонаж не на этом сервере . то реконект . Как только находим нужный сервер . Логинимся и получаем данные о персонаже . После подключаем сокет Чата .
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|
17.04.2018, 21:46 [ТС] | 19 |
Раскидал сокеты . но все равно показывает загрузку ЦП 60%
0
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
18.04.2018, 08:43 | 20 |
Marchcat, где это видно? Там 70% оверхед едитора.
0
|
18.04.2018, 08:43 | |
18.04.2018, 08:43 | |
Помогаю со студенческими работами здесь
20
Всплывающие подсказки для объектов unity c# Стрельба из оружия, пулинг объектов в unity Большие масштабы объектов. Планеты на Unity 5 Уничтожение объектов через другие объекты. Unity. C# Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |