![]() |
Ответ: Вопросы от новичка
Можно экспортировать сцены книжек в бандли и скачивать в приложение библиотеку. Вероятно надо для каждой книги свои имена сцен... (вот только не помню что на счет кода) Вероятно все сцены должны работать с одним набором кода и быть в одном проекте...
http://docs.unity3d.com/Documentatio...setBundle.html |
Ответ: Вопросы от новичка
Здравствуйте
Понадобилось мне обновлять меш процедурно каждый кадр, но тут узрел сильное падение фпс Делаю так: Код:
void Start(){ |
Ответ: Вопросы от новичка
Сделай перед присвоением новых массивов mesh.Clear(); возможно надо сохранить нормали и uv в отдельные массивы, если они есть...
|
Ответ: Вопросы от новичка
Ура! Фпс прямо таки взлетел!
Код:
....................................................... Спасибо :) |
Ответ: Вопросы от новичка
Никто с многопоточностью не экспериментировал? В юнити конечно с этим туго, но все же, если не использовать юнитивских объектов, то можно.
В .Net Parallel.For. В Mono эти классы вырезали( Вот думаю как написать свой Parallel.For. |
Ответ: Вопросы от новичка
написал свой parallel for.
Код:
public static void ParallelFor(Action<int, int> loop, int count) { В .net есть ManualResetEventSlim, который должен быть быстрее. Да и CountdownEvent тут бы лучше подошел. Но что есть - то есть. Кстати, чертов MonoDevelop перестал видеть классы из System.Threading и System. Все красным выделяет и подсказки не работают( Visual Studio 2013 юнити еще не начал поддерживать? А то старый 2012 не хочется ставить. |
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Вложений: 4
Такая ситуация. На сцене один меш без коллайдера (слой Default), коллайдер (слой TransparentFX) и объект с Lens Flare. Как расположены объекты на сцене и настройки можно посмотреть ниже. Но тут что-то не так. Lens Flare настроен таким образом чтобы игнорировать только слой коллайдера, но тогда он становиться виден даже через меш. Скорее всего это происходит из-за того что они "друг в друге". Кто что может сказать по этому поводу?
|
Ответ: Вопросы от новичка
Собственно Lens Flare работает только с коллайдерами, а единственный коллайдер игнорируется.
|
Ответ: Вопросы от новичка
Народ, подскажите пожалуйста, мне нужно затекстурировать куб. Но чтобы один полигон был одной текстурой закрашен, а второй другой. Т.е. перефразируя, как текстурировать отдельные полигоны меша? В Unity это вообще возможно?
|
Ответ: Вопросы от новичка
Сделай куб в максе, каждой грани назначь свой Material ID. Импортируй в Unity и пользуйся.
|
Ответ: Вопросы от новичка
Цитата:
У меня Unity с ним не работает. Или я настраиваю как-то не так. |
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
pax, подключил visual studio. Вроде все работает, только при изменении файлов из под юнити выскакивает сообщение.
И еще не нравится, что открывающая скобка переносится на новую строку. Это можно как-то отключить? И можно включить автодополнение названия всяких классов\полей? |
Ответ: Вопросы от новичка
1. Unity перестраивает файл проекта при изменении в файлах с кодом или текстовых ассетах, студия спрашивает о его перезагрузке. Все логично.
2. Не испытываю с этим проблем. Везде код на C# так пишут. 3. Оно работает. Зачем его включать? Я для большей удобности использую ReSharper (правда с ним студия дольше запускается). |
Ответ: Вопросы от новичка
pax,
1. Логично, но лучше бы он автоматически перезагружал. 2. Я привык, что в Java скобки не переносятся. Так код компактнее выглядит. 3. Да, работает. Что-то не заметил. Но помню, раньше в обычных проектах не работало. pax, у тебя Script Execution Order нормально работает? У меня после паузы (изменения TimeScale) очередность вызова OnGUI нарушается. И я так и не понял для чего указываются эти цифры и что такое default Time? Я так понял, если число отрицательное, то события будут вызывается вообще перед всеми событиями в других скриптах, даже если этих скриптов нету в Execution Order списке ? |
Ответ: Вопросы от новичка
2. А у меня наоборот проблемы, со скобкой на той же строчке. =0
|
Ответ: Вопросы от новичка
Я вообще не использую Script Execution Order, это костыль для тех, кто не может организовать работу логики в проекте нормально я считаю.
|
Ответ: Вопросы от новичка
pax, у меня один скрипт рисует кнопки, а другой двигает камеру.
Если в первом скрипте нажата кнопка, то делаю Event.current.Use() и во втором скрипте двигать камерой уже нельзя. |
Ответ: Вопросы от новичка
Зачем ты двигаешь камеру в OnGUI?
|
Ответ: Вопросы от новичка
pax, чтобы отсеять движения мышью над кнопками.
Перенес все в Update на свою голову. Теперь получается, что в Update у меня происходит PickObject т.е. выбор объекта на карте. Но когда объект выбран, над ним рисуется его GUI - две кнопки. И получается, что я жму на эти кнопки, а происходит PickObject и либо выбирается другой объект, либо так сказать Unselect. И те кнопки так и не срабатывают. И Update и OnGUI у меня в одном скрипте. |
Ответ: Вопросы от новичка
Так сделай проверку на попадание мыши в GUI. И пусть в Update проверяется этот флаг. Я у себя делал регистрацию Rect'ов элементов и если в этом кадре ни в один рект мышка не попала, то флаг false. Иначе true.
|
Ответ: Вопросы от новичка
я что-то сломал
все частицы в эдиторе стали воспроизводятся в "ван шот", даже чистые, "свежесозданные" в плеймоде же все гуд, loop работает ![]() это глюк? версия самая свежая, но крякнутая (хотел посмотреть что творится в профайлере и побаловаться с шейдерамы), но установил я ее еще неделю назад, а глюк появился сегодня все что я перед этим делал необычного так это впервые подключал андроид-устройство через remote UPD: удалил крякнутую и поставил фри-версию, глюк остался тут вспомнил что я изменял fixed timestep на максимум ибо физика мне не нужна не ожидая ничего хорошего я установил единицу и... ваншоты стали воспроизводится чаще О_О выставил значения по умолчанию и получил нормальные системы частиц, которые воспроизводятся без прерываний мне кажется это костыль, или так и должно быть?) |
Ответ: Вопросы от новичка
Товарищи, помогите, пожалуйста, далекому от кода человеку.
Суть задачи: по нажатию клавиши загружать в сцену префаб, удаляя текущий. по нажатию другой клавиши тоже самое в обратном порядке. Как мне уже подсказали нужно использовать массивы. Но даже прочитав статьи и примеры, до меня никак не доходит как это правильно сделать. |
Ответ: Вопросы от новичка
Цитата:
Код:
using UnityEngine; А как сделать объект прозрачным для OnMouseDown()? |
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Цитата:
Мне бы конечно лучше на пальцах объяснить. Возможно в вопросе упустил важную деталь, нужно загружать/удалять определенные префабы в определенном порядке. Опишу проще: выбор автомобилей в гараже (но не храня в памяти все модели сразу). |
Ответ: Вопросы от новичка
Попробуй это:
PHP код:
|
Ответ: Вопросы от новичка
pax, большое спасибо за коменты в коде, именно этого и не хватало.
|
Ответ: Вопросы от новичка
Вложений: 1
Кто-нибудь пробовал использовать GUIUtility.ScaleAroundPivot внутри BeginGrop-EndGroup?
Проблема в том, что ScaleAroundPivot влияет на размер группы. Делаю редактор атласов. Чтобы в привью рисовать тайлы на атласе, нужно рисовать внутри группы маленькие текстурки, с координатами от 0 до w\h (размер атласа). Но группа может быть меньше, чем эти w и h. Для этого я пытаюсь отскейлить GUI матрицу, но это скейлит и размер группы, что в итоге обрезает часть атласа. Вот так (: Только на скриншоте размер группы равен размеру атласа, поэтому box выходит за экран. |
Ответ: Вопросы от новичка
А зачем скейлить вообще? Получи рект через GUILayoutUtility.GetRect и нарисуй в него с помощью GUI.DrawTexture или GUI.Label
|
Ответ: Вопросы от новичка
Я так и делаю.
Только координаты для GUI.DrawTexture выходят за пределы группы. Конечно можно сами эти координаты скейлить, но это не круто. Я раньше так делал, получается туча кода. |
Ответ: Вопросы от новичка
Ну а пересчитать Rect для текстуры (уменьшить) лень? скейлить то зачем?
|
Ответ: Вопросы от новичка
Не лень. Когда таких пересчетов дофига, то rect пересчитать, то координату мыши. Вообщем получается не очень красиво.
Я пробовал увеличивать rect, но и тут проблема, rect передаваемый в group обрезается, чтобы не вылазил за экран. Но при обрезании не учитывается матрица. Отскейленный rect может не выходить за экран, а оно его все равно обрежит. |
Ответ: Вопросы от новичка
Не забываешь восстанавливать матрицу после отрисовки своей группы? Ведь матрица GUI остается дальше такой же.
PS: когда у меня много одинаковых пересчетов, я обычно для этого вспомогательные методы пишу, чтобы сократить код. |
Ответ: Вопросы от новичка
А что лучше для написания малых проектов(аля платформеров, змеек и прочего) C# или JS? Просто незнаю что начинать изучать. Или тут уже вопрос что удобнее?
|
Ответ: Вопросы от новичка
Разница в скриптах небольшая, если хочется иметь возможность в будущем применить опыт вне Unity - то C#.
|
Ответ: Вопросы от новичка
Всем доброго времени суток.
Каким образом делаются аудиоигры, где по загруженной музыке строится уровень/меняются цвета/что-нибудь? Стопудово должно уже быть какое-то готовое решение в виде библиотеки, если нет - подскажите, пожалуйста, принцип, по которому можно это сделать. По гуглу нашёл только XNA-вариант. |
Ответ: Вопросы от новичка
Есть несколько функций у листнера, который обычно висит на камере:
http://docs.unity3d.com/ScriptRefere...utputData.html http://docs.unity3d.com/ScriptRefere...ctrumData.html Можно их использовать. |
Ответ: Вопросы от новичка
|
Ответ: Вопросы от новичка
Спасибо, то что нужно.
UPD: По наводкам покопался глубже, нашёл хорошее решение, если кому-нибудь интересно: Исходники там же. |
Ответ: Вопросы от новичка
Делаю шкалу (бар) с полукруглыми окончаниями... Подскажите как сделать маску для шкалы ,чтобы при малых значениях полукружки не выпирали за границы бара... какой то шейдер что ли должен быть...?
|
Ответ: Вопросы от новичка
В новом GUI в еще не вышедшей Unity 4.6 есть маска на основе альфы спрайта. Если делать 3d элементами, то можно перед баром нарисовать только в глубину модель-маску (пример должен быть тут, но вики что-то сейчас не работает). А потом рисовать бар, который чуть дальше от камеры и включить ZTest. Стенсильным буфером я не пользовался, поэтому ничего особого посоветовать не могу.
|
Ответ: Вопросы от новичка
Я бы написал шейдер для квада, в котором бар рисуется картинка с маской и программно менял -длину маски, или смешение setOffset методом
|
Ответ: Вопросы от новичка
Кстати да, можно сделать маску из двух текстур и у второй сдвигать uv
|
Ответ: Вопросы от новичка
Цитата:
|
Ответ: Вопросы от новичка
Цитата:
Алгоритм пиксельшейдера прост: srs = tex2d(srs_img,pos) mask = tex2d(mask_img,pos-vec2d(1-xoffset,0)) srs.a = mask.r outcolor = srs.a pos- координата пикселя xoffset - смещение маски по x 0-1 outcolor - расчитаный пиксель Просто ставит в альфа канал картинки значение красного канала маски из положения пикселя+смешение, получается альфамаска) Так как не помню наизусть синтаксиса GLSL,то писал как помню. Такой шейдер пойдет? В нем маска едет (вроде правильно, правил на мобиле): PHP код:
|
Ответ: Вопросы от новичка
Вопрос...
В приложении для андроида надо в ассетах запомнить массив рисунков (jpg) и потом в ходе игры их динамически подгружать как 2Д текстуры... Как это можно сделать вообще и скрипты (какая ф-ия)? Пробовал через Resource.Load.., но при этом сильно растет объем АПК файла. Надо как то по другому... может как то с WWW....? PS. В игре задействован 2dTool... |
Ответ: Вопросы от новичка
В проекте можно создать папку StreamingAssets
http://docs.unity3d.com/Manual/StreamingAssets.html положить туда jpg файлы и в случае андроида только по WWW оттуда считать используя WWW.texture к примеру. |
Ответ: Вопросы от новичка
Когда создаю новую папку в Scripts , то у меня автоматически появляется новая Assembly-CSharp-<Name> в проекте. Как можно этого избежать? (у меня кстати есть в Scripts папка, которая не помню как создавалась, но для нее нету отдельной "сборки", а вот новые нормально добавить не могу). Используется MonoDevelop.
Не знаете как со студией подружить юнити? Находил какие то статьи на англ, но ниче не понял. |
Ответ: Вопросы от новичка
Сборки создаются в том случае, если в проекте есть особые папки (Plugins, Plugins/Editor, Editor, Standard Assets и т.д.). Это связано с тем, что эти части компилируются в разное время. Так же для js свои сборки.
Студия (не фри версия) работает нормально. |
Ответ: Вопросы от новичка
Цитата:
Цитата:
|
Ответ: Вопросы от новичка
никто еще не тестировал юнити 5?
я так надеюсь, что в нем можно будет получить данные из render texture и можно будет создавать меш со своим набором и типом данных. первое нужно, чтобы посчитать шум перлина на карточке. а второе чтобы оптимизировать потребление памяти. без этого дальнейшее развитие моего проекта бессмысленно( Еще бы не помешало создавать меш прямо на gpu. сейчас приходится доставать данные из ComputeBuffer, а затем отправлять их в меш. Что накладно для, например, marching cubes. |
Ответ: Вопросы от новичка
C рендертекстуры же можно пиксели считать. Ставишь рендертекстуру RenderTexture.active = rt; и читаешь пиксели в обычную текстуру Texture2D.ReadPixels.
ИМХО скорее всего своих структур меша не будет. |
Ответ: Вопросы от новичка
Можно то можно, но тормозит это сильно. да и у обычной текстуры форматов меньше.
www.gamedev.ru/code/forum/?id=176270 вообщем получить из нее данные - действительно проблема. и в этом не юнити виновата, а ограничение low level api, видно из-за синхронизации так. хотя на том форуме приводятся более производительные методы. так что юнити все же могла бы быть лучше. в dx11 создали специальные текстуры для расчетов RWTexture2D/3D. но юнити имеет лишь compute buffer. а в dx9 наверно и вообще нет нормального способа это сделать. если кастомного меша не будет, то можно попробовать Graphics.DrawProceduralIndirect. теоретически им можно отрендерить любые данные хранящиеся в compute buffer. но dx9 отпадает. хотя не ясно как эта функция работает и какой ее аналог в dx11. и примеров по ней не видел. |
Ответ: Вопросы от новичка
RenderTecture в видеопамяти, чтобы получить ее в обычную память, память надо скопировать, это естественно медленно. Я других способов не знаю как это быстрее сделать.
Я вообще ничего еще из новых возможностей типа compute buffer не использовал ничего. |
Ответ: Вопросы от новичка
да копирование памяти не столь медленное. texture.GetPixels вполне может работать в рантайме. а Texture2D.ReadPixels понижала фпс до 1-5.
к сожалению не знаю есть ли в dx9 другие способы получить расчеты. в dx11 сделали RWTexture2D , но юнити почему-то их обошел стороной и подовольствовался лишь ComputeBuffer'ом. |
Ответ: Вопросы от новичка
Странный баг - моно ругается на Camera.main, говорит `Camera' does not contain a definition for `main' и т.д. про все свойства камеры...! Что это? )))
|
Ответ: Вопросы от новичка
camera с маленькой буквы. main это статическое свойство класса, так что надо Camera.main
|
Ответ: Вопросы от новичка
pax, извини за неточность там все правильно - Camera.main , я поправил предыдущий пост, тут что то другое...
|
Ответ: Вопросы от новичка
Скрипта с названием Camera случаем нет? Нечайно может создал такой класс?
|
Ответ: Вопросы от новичка
ОМГ, в точку! рах, большое спасибо... ты гений! )
|
Ответ: Вопросы от новичка
Почему Debug.Log(""); не выводит мне в консоль? Какие то настройки нужно проверить?
|
Ответ: Вопросы от новичка
Думаю выводит, у тебя скорее всего в консоли нажата кнопка collapse и справа от первого вывода бежит счетчик.
![]() |
Часовой пояс GMT +4, время: 01:48. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot