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)

pax 14.12.2015 16:11

Ответ: Вопросы от новичка
 
Проверь, в каком порядке вызываются. Может ты сохраняешь настройки еще не загрузив их.

RegIon 14.12.2015 16:41

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

Сообщение от pax (Сообщение 302606)
Проверь, в каком порядке вызываются. Может ты сохраняешь настройки еще не загрузив их.

Да вроде проверял. И очередность судя по логам нормальная:


Цитата:

[SETTINGS] be saved
нету -значит вообще при старте не сохраняет, только при изменении.

Гребаный делегат, почему он вызывается при старте? А, хотя понятно почему.


Исправил, поставив загрузку настрое до присвоения события.

RegIon 15.12.2015 13:49

Ответ: Вопросы от новичка
 
Можно как-то получить все объекты на сцене, включая выключенные из CustomEditor ? По идее для редактора они должны быть равнозначными и как-то можно получить, но не нашел в справке!!

Жека 30.01.2016 15:52

Ответ: Вопросы от новичка
 
Локализация игры.
Подскажите какой-нибудь способ - как подменять картинки согласно текущей локали.
С текстами я придумал простой способ, а с картинками пока нет. Просто вытаскиванием из бандла/ресурсов, разве что.

pax 31.01.2016 09:51

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

AVL 01.02.2016 00:56

Ответ: Вопросы от новичка
 
Товарищи, я нифига не понял... По какой логике работает сжатие текстур в юнити? В гугле выдается куча статей и обсуждений по теме того как оптимизировать размер билда, но там обычно уже оптимизации на тему того как уменьшить размер текстуры, не сильно потеряв в качестве. Но блин, как получается так что когда все ассеты в png весят 20мб, билд под Android - 30мб, но при этом билд под винду - 200мб, а под webgl - вообще все 300? При том что для всех текстур стоит сжатие по умолчанию - Compressed.
С webgl вот что непонятно: в папке билда появляются 2 папки - Compressed и Release. И во всех туториалах написано, что сервер, увидев .htaccess файл, будет отправлять браузеру только Compressed. Тогда зачем вообще нужна папка с несжатыми ассетами, зачем ее заливать на сервер, и почему без нее игра не запускается? Например, хочу залить на itch.io, все 300мб в zip сжались до 30, но вот игра не запускается - сайт жалуется на слишком большой файл.

pax 01.02.2016 07:24

Ответ: Вопросы от новичка
 
Обновись уже на Unity 5.3, там в webgl только сжатый билд. Вообще с WebGL надо разные версии Unity пробовать, 5.3.1 крашится у нас к примеру. Я бы на твоем месте взял последний патч релиз отсюда: http://unity3d.com/unity/qa/patch-releases

Жека 01.02.2016 08:01

Ответ: Вопросы от новичка
 
Ещё в юнити есть штука Sprite Packer в меню Window. По дефолту выключена. Если твои картинки в отдельных файлах, то полезно включать пакер.

RegIon 01.02.2016 13:06

Ответ: Вопросы от новичка
 
Его лучше включить после того, как добавил-изменил ресурсы, а то как расчет освещения - будет жрать ресурсы, если без зпрядки на ноуте сидишь - слеиает заряд моментально, так как CPU на 100% крутится.

Я сделал кастом инспектор, который составляет соответсвие локали с объектами с тегом multilang. Он загоняет их в json. Текст выглядит как %marker - по нему выбирается из json пака слов, а спрайт/текстура как %tex_marker, он уже выбирается из префабов (лучше из ресов наверное ) с именем marker.

На объектах где языкозависимый ресурс - скрипт, где он подписан на обновление контроллера, через который происходиь изменение ланга. Т.е меняешь индекс в контроллере - он рассылает эвент о смене языка, после которого объект запрашивает у него текст/картинку на которкэую сменить по %marker , и если он есть - возвращает новый. Так, если частичный перевод нет проблем с отсутсвием текста вообще, если в лангпаке его нет -стоит прошлый, в котором есть ресурс.

Жека 01.02.2016 14:44

Ответ: Вопросы от новичка
 
RegIon, я примерно так же делать буду.

Вопрос по файлу .gitignore.
Я надавно прочитал, что в папке Library хранится важная инфа, meta-данные о связях объектов.
Пришлось включить эту папку в гит (кроме кэша шейдеров), до этого была выключена, т.к. я использовал "рекомендуемый" .gitignore, взятый на стэковерфлоу.

Но в папке Library столько шлака, файлы то создаются, то удаляются.
Кто шарит, подскажите - что делать с этой папкой.

Taugeshtu 01.02.2016 17:06

Ответ: Вопросы от новичка
 
Library в репозитории быть не должна по идее. Единственный "минус" от её отсутствия в репе - при клонировании репы в новое место юнити придётся переимпортировать ассеты в свои кэши. Один раз. Мета-данные лежат в файлах .meta.

Наш .gitignore:
PHP код:

[Ll]ibrary/
[
Tt]emp/
[
Oo]bj/
[
Bb]uild/
[
Bb]uild_*/
.
vscode/

[
Tt]emp.meta

# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj

# Unity3D generated meta files
*.pidb.meta 

Юнити имеет следующую страницу мануала, где в числе прочего упоминается:
Цитата:

8. Optional: Set up an ignore filter for the unversioned Library directory: svn propedit svn:ignore MyUnityProject/ Subversion will open a text editor. Add the Library directory.

Жека 01.02.2016 19:32

Ответ: Вопросы от новичка
 
Спасибо. Щас снова читал про эту папку и увидел

《As a user, you should never have to alter the Library folder manually and attempting to do so may affect the functioning of the project in the Unity editor. However, it is always safe to delete the Library folder (while the project is not open in Unity) as all its data is generated from what is stored in the Assets and ProjectSettings folders.》

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

Теперь ясно стало.

RegIon 12.02.2016 21:46

Ответ: Вопросы от новичка
 
Как *епть* в Unity получить угол по оси X в диапазоне 0 - 360 ???

Я устал и не могу это понять... эти углы эйлера зло. Тем более в юнити. ТО у нее угол дофига, то ограничен 180 градусов.

Нужно узнать какая цифра барабана игрового автомата выпала. автомат 6*ти значный, на 3 барабана.

pax 13.02.2016 19:57

Ответ: Вопросы от новичка
 
Обычно ты можешь просто запомнить угол и его менять в отдельной флоат переменной, а потом применять вращение к барабану (transfrom.eulerAngles = new Vector3(angle, 0,0) или transform.rotation = Quaternion.Euler(angle, 0,0)). Это самый простой и верный способ.

Ну а в целом я бы на твоем месте считал бы угол между осью, перпендикулярной к оси барабана (Например Vector3.up, если ось барабана это Vector3.right) и такой же осью на самом барабане (например transform.up) с помощью Vector3.Angle. Это будет угол 0..180. Знак угла можно определить через векторное произведение up векторов. Далее можно так же получить угол между векторами Vector3.right и полученным с помощью векторного произведения вектором, если угол < 90 градусов (вектора смотрят примерно в одну сторону), то это один знак, если больше, то другой (вектора смотрят в разные стороны). Потом с полученным знаком угол будет -180..180 и его можешь использовать. Так можно решить задачу при произвольной ориентации барабана, если знать направления осей.

UPD: Описал чуть более понятно. И к сведению - Unity не работает с углами Эйлера, вращение в Unity хранится в кватернионе и по требованию (transform.eulerAngles) кватернион преобразуется в углы Эйлера. Поэтому они часто не имеют значения 180-360 и т.д а имеют значения в диапазоне -90..90 и подобные, но в целом могут быть разные, т.к. конвертация кватерниона в углы Эйлера не может дать гарантии преобразования в угол например 720 (два оборота).

Владимир 25.02.2016 13:54

Ответ: Вопросы от новичка
 
Доброго времени суток.
Собственно вот и я пришел на ваш форум поскольку начал осваивать Unity. За тупые вопросы сильно не пинайте, поскольку изучаю Unity всего месяц, притом месяц же изучаю и C#(более того не программер, в молодости учил только C++ и то дальше простеньких программ не пошло), поэтому вопросы могут быть весьма тупыми. И то и другое изучаю на боевую, т.е. пишу простенькую игрушку.
Итак собственно вводные:
Есть объект игрока, есть объект врага и есть объект растения. Урон наноситься игроком врагу или растению и врагом всем остальным Урон наноситься непосредственным контактом. Если рассматривать коллизию 1:1 то проблем написать такой код у меня нет, есть проблема с написанием кода 1:многим. Моя цель выбрать из всех объектов с которыми я столкнулся один, с минимальным значением одной из переменных экземпляра объекта, а для этого мне нужно получить количество объектов с которым столкнулся мой игрок.
Вот кусок кода:

Код:

void OnCollisionEnter2D(Collision2D coll)
    {
        // Получаем количество коллизий.
        int count = coll.contacts.Length;
        //Объявляем переменную объекта.
        GameObject ob;
        //Объявляем переменную объекта с минимальным hp.
        GameObject minHpOb;
        Debug.Log("Количество коллизий : " + coll);

        //Задаем цикл  в котором перебираем всех противников
        for (int i = 0; i < coll; i++)
        {

            //выбираем только объекты с тегами Plant, Player, Enemy
            if (coll.contacts[i].collider.gameObject.tag == "Plant" || coll.contacts[i].collider.gameObject.tag == "Player" || coll.contacts[i].collider.gameObject.tag == "Enemy")
            {
                //Получаем GameObject и присваиваем переменной.
                ob = coll.contacts[i].collider.gameObject;
                Debug.Log("Имя объекта с которым столкнулись : " + ob);
           
                //первое присваивание minHpOb объекту ob.
                if (minHpOb = null)
                {
                    minHpOb = ob;
                }

Тут то и возникла главная моя проблема. Как я понимаю функции OnCollisionEnter2D и OnCollisionStay2D обрабатываются для каждой коллизии отдельно. Т.е. по факту переменная count = coll.contacts.Length; будет всегда равна 1(хотя вроде как до 5 версии все работало правильно и выдавалось именно общее количество коллизий). Собственно из этого и вытекают мои вопросы.
1. Мне собственно нужно получить количество объектов с которыми столкнулся объект игрока. Что почитать? Офф. справку читал, но если честно мало, что понял в данном конкретном вопросе.
2.OnCollisionExit2D срабатывает при любом выходе из коллизии даже в случае множественных коллизий(т.е. если из нескольких действующих коллизий одна прервалась)?
Готовых решений не ищу, скорей нужен совет, что почитать или как лучше реализовать в плане логики алгоритм получения количества коллизий, если выбранный мной простой путь не работает или в корне не верен.
Заранее спасибо!


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

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