forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

Nex 03.02.2017 14:49

Ответ: Вопросы от новичка
 
При использовании ScriptableObject для инвентаря столкнулся с проблемой получения нужного ScriptableObject'а через код. Сделал костыль-базу_данных где есть List<>, который заполняю всеми доступными для инвентаря ScriptableObject'ами через редактор и далее в коде уже ищу по имени нужное. Есть ли еще какие-нибудь варианты поиска нужного ScriptableObject через код?

pax 03.02.2017 18:36

Ответ: Вопросы от новичка
 
Помести в Resources и делай загрузку из ресурсов по имени.
PHP код:

var inventoryItem Resources.Load<MyScriptableObject>("inventory_items/"+itemName


Mimi Neko 06.02.2017 01:59

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от RegIon (Сообщение 307202)
Корутина WWW неплохо нагружает поток,FPS падает до 15.
Загружаю встречно основным действиям картинку с диска.
До этого грузил по необходимости (т.е нужно сменит - останавливаю обработку, загружаю, обновляю), сейчас решил сделать как-то так:
Работаю с текущим изображением + гружу новое, а потом обновляю, когда нужно. Но это нехило грузит.

Что посоветуете?

Можно попробовать без корутин, в отдельном потоке.
корутина-то в общем потоке работает.

Nex 06.02.2017 12:53

Ответ: Вопросы от новичка
 
Как из unity3d editor выгружать не нужное? При запуске юнити занимает в памяти 176мб, но после работы в течении дня начинает занимать в памяти уже ~500мб. Так же замечал иногда, что каждую секунду процесс начинает потреблять на пару килобайт больше и через какое то время начинает отжирать довольно много памяти. Никаких юзер скриптов работающих в редакторе у меня нет за исключением атрибута [CreateAssetMenu] в одном из скриптов. Так же никаких левых ассетов из стора и кряков не использую.

RegIon 06.02.2017 14:04

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Nex (Сообщение 311724)
Как из unity3d editor выгружать не нужное? При запуске юнити занимает в памяти 176мб, но после работы в течении дня начинает занимать в памяти уже ~500мб. Так же замечал иногда, что каждую секунду процесс начинает потреблять на пару килобайт больше и через какое то время начинает отжирать довольно много памяти. Никаких юзер скриптов работающих в редакторе у меня нет за исключением атрибута [CreateAssetMenu] в одном из скриптов. Так же никаких левых ассетов из стора и кряков не использую.

Иногда не выгружаю Unity по 3дня и не замечал такой проблемы. Папка Temp растет конечно катастрофично.

Nex 18.03.2017 16:26

Ответ: Вопросы от новичка
 
Как в играх делают частичную паузу допустим при диалогах, всплывающих окнах при которой всё кроме ключевых персонажей, объектов останавливается?
Время ставить в ноль получается не вариант, ибо остановится вся игра. А делать в каждом скрипте проверку на что то типа GameController.IsPause как то бредово.

Taugeshtu 18.03.2017 18:50

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Nex (Сообщение 312518)
Как в играх делают частичную паузу допустим при диалогах, всплывающих окнах при которой всё кроме ключевых персонажей, объектов останавливается?
Время ставить в ноль получается не вариант, ибо остановится вся игра. А делать в каждом скрипте проверку на что то типа GameController.IsPause как то бредово.

Вот именно поэтому имеет смысл не пользоваться стандартными Update() напрямую. Мне довольно удобно работать когда у меня есть выделенный класс, который занимается инстанциированием, другой - запуском игровых процессов, третий - обращением к хранилищам данных.

Если у тебя запуск игровой логики на обсчёт сконцентрирован в одном месте (или хотя бы в Update() класса, от которого всё игровое наследуется, и внутри родительского Update() происходит запуск виртуального DoLogic()) - это легко решается. Оверхед от вкручивания чуть более громоздкой архитектуры окупается :)

seaman 18.03.2017 22:42

Ответ: Вопросы от новичка
 
Цитата:

Время ставить в ноль получается не вариант, ибо остановится вся игра.
В скриптах, которые не должны останавливаться использовать вмеcто deltatime - Time.unscaledTime

RegIon 16.05.2017 17:50

Ответ: Вопросы от новичка
 
Блин, никак не пойму как крутить объект типа LookAt вокруг определенной оси. Типа как вращается LineRenderer. Т.е вокруг оси направления dращается LineRenderer.

Красные - как есть, голубые - как надо.



Это квады, кручу выставляя ось right.

pax 16.05.2017 18:28

Ответ: Вопросы от новичка
 
Не особо понял что там нарисовано и как что крутишь, я обычно прибегаю к векторному произведению и восстанавливаю нужной мне осью не правильную.
А в твоем случае - сделай пустышку (парента), поверни внутри нее свой квад как надо и делай лук эт этой пустышке.

RegIon 16.05.2017 18:55

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 313613)
Не особо понял что там нарисовано и как что крутишь, я обычно прибегаю к векторному произведению и восстанавливаю нужной мне осью не правильную.
А в твоем случае - сделай пустышку (парента), поверни внутри нее свой квад как надо и делай лук эт этой пустышке.

Нужно крутить Квад со стримерами (электроразряды) по оси образованной усам подков (от красной к синей) к камере.
Что бы стримеры всегда располагались на этой оси и смотрели на камеру.

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

Taugeshtu 16.05.2017 19:35

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от RegIon (Сообщение 313615)
Нужно крутить Квад со стримерами (электроразряды) по оси образованной усам подков (от красной к синей) к камере.
Что бы стримеры всегда располагались на этой оси и смотрели на камеру.

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

Посмотри вот на этот метод.
Вторым параметром можно задать плоскость относительно Look-вектора. Скорее всего в твоём случае будет что-то типа:
Код:

var magnetPoseDiff = magnetB.position - magnetA.position;
var cameraDiff = Camera.main.transform.position - magnetA.position;
var rotation = Quaternion.LookRotation( magnetPoseDiff, cameraDiff );
m_quadTransform.rotation = rotation; // обрати внимание, что здесь в глобальных координатах действуем
// опционально может понадобиться довернуть квад на 90 градусов:
m_quadTransform.localRotation *= Quaternion.Euler( Vector3.right *90f );



Часовой пояс GMT +4, время: 15:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot