Войти
ПрограммированиеФорумОбщее

Unity (проблемы, решения, перспективы) (119 стр)

Страницы: 1116 117 118 119 120 121 Следующая »
#1770
17:25, 18 апр. 2019

alexzzzz
> 1) эффективнее
Это подразумевает больше FPS?

> 2) чтобы было можно легко кастомизировать, нужное добавлять, ненужное убирать.
Вот это не понял. Что там такого введено для удобства? Я понимаю, что там и у материалов другие настройки (собственно я думал картинка от этого должна быть другой).

> Эта картинка только в голове или есть в виде референса?
На сколько я понял, в голове.


#1771
17:29, 18 апр. 2019

Даже скажем так, для новый проектов (преимущественно для Android) на сколько целесообразно использовать Lightweight RP вместо стандартного?

#1772
(Правка: 19:42) 17:41, 18 апр. 2019

Специально я не разбирался. Так, на уровне статей и видео.

>> 1) эффективнее
> Это подразумевает больше FPS?
Да.

>> 2) чтобы было можно легко кастомизировать, нужное добавлять, ненужное убирать.
>Вот это не понял.

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

Или в одном из видео с последнего GDC показывали пример: надо сделать outline вокруг песонажей. Можно хакать их шейдеры и добавлять туда рисование контура дополнительным пассом. Но можно шейдеры не трогать, а добавить дополнительный шаг в рендер, который объекты из указанного слоя будет рисовать указанным outline-шейдером.

#1773
17:46, 18 апр. 2019

Кстати, Unity всё ещё однопоточный?

#1774
19:43, 18 апр. 2019

За словами «однопоточный» и «многопоточный» непонятно что скрывается.

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

#1775
10:32, 2 мая 2019

Отпишитесь - у кого сколько кликов мышкой по обьекту в иерархии требуется что бы начать его переименовывать?
У меня 3, но такое ощущение , что так было не всегда (не сломал ли я что то случайно).

#1776
(Правка: 11:17) 11:15, 2 мая 2019

Polyflow3d
> Отпишитесь - у кого сколько кликов мышкой по обьекту в иерархии требуется что бы начать его переименовывать?
Если объект выделен, то требуется нажать один раз и через задержку позволят переименовать. Если объект не выделен, то три раза нужно нажать и позволять переименовать. Если на объекте сделать двойной клик, то камера к нему перелетит. Это хорошо. Вот только она к нему перелетит если и нажать три клика для переименования, а мне это не нравится. В общем я переименовываю через один клик и один F2. У меня 2019.1, как вообще переименовывалось на кликах, я не знаю. Всегда только через F2 переименовывал.

#1777
16:16, 2 мая 2019

2017.4, 2018.3, 2019.1

- Первый клик, чтобы выделить объект.
- Выдержать паузу, чтобы не даблкликнуть.
- Ещё клик, по выделенному, ― запускается переименование.

#1778
16:52, 2 мая 2019

да, все правильно, у меня как и у всех. ложная тревога

#1779
(Правка: 21:58) 21:47, 20 мая 2019

Мучаю симуляцию жидкости. Есть непонятная проблема.

Имеется пять джобов, все IJobParallelFor, каждый следующий зависит от предыдущего:
1. QuantizeJob
2. DensityPressureJob
3. ForcesJob
4. IntegrationJob
5. CollisionJob

Запускаются простой цепочкой:

            var job1 = new Job1 { ... };
            var handle = job1.Schedule(count, BATCH_SIZE);

            var job2 = new Job2 { ... };
            handle = job2.Schedule(count, BATCH_SIZE, handle);

            var job3 = new Job3 { ... };
            handle = job3.Schedule(count, BATCH_SIZE, handle);

            var job4 = new Job4 { ... };
            handle = job4.Schedule(count, BATCH_SIZE, handle);

            var job5 = new Job5 { ... };
            handle = job5.Schedule(count, BATCH_SIZE, handle);

            handle.Complete();

Первый джоб почти всегда выполняется одновременно на 4 ядрах, а остальные почти всегда только в три потока, в то время как главный поток стоит и ничего не делает:

+ Картинки из профайлера

Иногда первые два джоба выполняются в 4 потока, а остальные в 3:

+ Показать

Идеальная ситуация, когда все джобы работают в 4 потока, бывает, но очень-очень редко:

+ Показать

В отладочном билде и в редакторе профайлер показывает одинаковую картинку. Пробовал в произвольные места втыкать JobHandle.ScheduleBatchedJobs(), но оно вообще ничего не меняет.


Чего бы такого подкрутить, чтобы джобы всегда использовали все ядра?

#1780
17:09, 14 июня 2019

alexzzzz
> Чего бы такого подкрутить, чтобы джобы всегда использовали все ядра?
Я боюсь тут конфликт будет с другими процессами. То есть технически можно создать потоки и они будут каждый на своем ядре, но это в идеальной OS где других процессов не будет совсем.

#1781
(Правка: 17:16) 17:09, 14 июня 2019

Я тут вот что нашел. Оказывается можно делать параметры в MonoBehaviour public с тегом [HideInInspector]. Предположим что тип такого поля наследован от ScriptableObject, и один из обьектов этого типа сохранен как *.asset. Теперь можно установить значение этого поля присвоив ему по умолчанию привязку к этому объекту из ассетов, прямо в свойстве скрипта до установки его на gameobject.

К сожалению работает как написано только в режиме редактора. Или после присваивания скрипта gameobject привязка сохраняется?

#1782
21:08, 14 июня 2019

foxes

К сожалению работает как написано только в режиме редактора. Или после присваивания скрипта gameobject привязка сохраняется?

сейчас попробывал - сохраняется  Но зачем это может быть нужно?

#1783
(Правка: 21:46) 21:29, 14 июня 2019

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

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

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

Гораздо удобнее было бы если бы это можно статично сделать через static параметры.

#1784
(Правка: 8:47) 8:35, 15 июня 2019

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

Я в нем храню всякие  текстуры, материалы, массивы,  стили, и в нем же эти стили редактирую, потому что Scriptable Object позволяет делать Custom Editor

Изображение 

к этому синглтону можно обращаться через статическую функцию вот так  -

GUI.Draw( EditorExtension.ResourceHolder.MyCoolTexture );


сам геттер ResourceHolder реализован так -

 public static class EditorExtension {
        static PolyflowResourcesHolderSO _resourceHolder;
        public static PolyflowResourcesHolderSO ResourceHolder {
            get {
                if (_resourceHolder == null) {
                    string[] result = AssetDatabase.FindAssets("t:PolyflowResourcesHolderSO");
                    if (result == null || result.Length == 0) {
                        Debug.LogError("EditorResourcesHolderSO not found. Please reinstall package.");
                        return null;
                    }
                    if (result.Length > 1) {
                        for (int i = 0; i < result.Length; i++) {
                            string ipath = AssetDatabase.GUIDToAssetPath(result[0]);
                            Debug.LogWarningFormat("There are multiple EditorResourcesHolderSO in Assets.  {0}: {1}", i, ipath);
                            if (_resourceHolder == null) {
                                _resourceHolder = (PolyflowResourcesHolderSO)AssetDatabase.LoadAssetAtPath(ipath, typeof(PolyflowResourcesHolderSO));
                            }
                        }
                    } else {
                        string path = AssetDatabase.GUIDToAssetPath(result[0]);
                        _resourceHolder = (PolyflowResourcesHolderSO)AssetDatabase.LoadAssetAtPath(path, typeof(PolyflowResourcesHolderSO));
                    }
                }
                return _resourceHolder;
            }
        }
}

Страницы: 1116 117 118 119 120 121 Следующая »
ПрограммированиеФорумОбщее