Пятница, 27 Декабря 2024, 12:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • GantZ_YakaДата: Четверг, 24 Июля 2014, 20:35 | Сообщение # 6341
    почетный гость
    Сейчас нет на сайте
    Fr0sT, из всех систем видимости, что я тестил (в т.ч. и встроенный culling в unity), мне больше всего понравилась M2H Culling (она free и писалась довольно давно, но работает славно). Там ничего мудреного нет, в отличие от конкурентов, она не пускает лучи из камеры, не нужно на объекты вешать всякие теги, слои, коллайдеры. Просто расставляешь в сцене области видимости (area или кубики) и указываешь в выпадающих списках в какой области какие области видеть, а какие не видеть, и все. Дальше скрипты все сделают сами. Для расчета нахождения игрока и объектов в областях используются габариты объектов (bounds), что систему нагружает по минимуму.
    Добавлю еще, из личных тестов находил слабые места в производительности так: во время запущенной игры по очереди отключаешь объекты в сцене (целиком, вместе со скриптами) и смотришь как это влияет на fps в статистике - можно так быстро и легко выявлять слабые места, нередко бывает, что не очень хорошо написанные скрипты с кучей поисков объектов по тегу или просто перегруженным Update всякими расчетами нехило кушает fps. Далее, все недвижимые объекты должны быть static (галочка в инспекторе) и должен быть включен static batching. На некоторых объектах имеет смысл отключать recieve shadow и cast shadow, об едином меше у объектов с одним материалом стоит думать заранее в 3d-реедакторе, и делать так везде, где есть возможность. У камеры снизить до приемлимого минимума дальность видимости. Постараться избавиться от использования в системах частиц своих собственных мешей - нехило грузит тоже. Ну а основное, чему стоит уделить внимание - это все те же mesh renderer, skinned mesh renderer и т.п. на объектах, которые если вовремя отключать, дают хороший прирост к производительности.
    White9Дата: Четверг, 24 Июля 2014, 20:57 | Сообщение # 6342
    заслуженный участник
    Сейчас нет на сайте
    Laush, если в лоб, то можно просто каждый кадр ставить позиции по Z нужное значение в цикле. Справка сейчас у меня не открывается, но команда вроде бы
    Код

    transform.position.z = 0;
    Fr0sTДата: Пятница, 25 Июля 2014, 01:00 | Сообщение # 6343
    постоянный участник
    Сейчас нет на сайте
    GantZ_Yaka,
    Большое спасибо,завтра пошаманю еще.А вообще,скрипт неплохо справляется,я игру скомпилировал,запустил и там она работает прекрасно.Но все же спасибо за информацию!




    JonLivingstonДата: Пятница, 25 Июля 2014, 12:31 | Сообщение # 6344
    почетный гость
    Сейчас нет на сайте
    Со своей проблемой давно разобрался. Просто заменяем

    Код
    motor.movement.maxForwardSpeed = 0;
       motor.movement.maxSidewaysSpeed = 0;
       motor.movement.maxBackwardsSpeed = 0;


    на

    Код
    motor.canControl = false;


    Теперь возникла другая проблема. Импортирую из блендера (*.fbx) персонажа со скелетной анимацией. В настройках импорта все анимации проигрываются как надо, но стоит запустить их в Animator'е, как случается странный баг. Правильно проигрывается любая анимация, которая начинается с нулевого кадра, все остальные выглядят так: персонаж становится в стандартную позу (стоит прямо, руки расставлены) и проигрывается только анимация кистей и пальцев. Самое интересное, что там и записана то только анимация кистей и пальцев, остальной скелет просто выставлен в правильную позу, но как раз в нее то он и не становится.

    Такая проблема встречается только с анимациями из этой конкретной сцены блендера. Остальные работают нормально. Понятно, что самый ожидаемый ответ - косяк в данной анимации, и если все остальное работает нормально, то необходимо просто ее переписать. Но мне необходимо понять, в чем именно косяк, ведь анимация записывалась точно так же, как и остальные, да и, если начинать с нулевого кадра, все работает. Значит проблема все-таки в юньке?


    "Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах
    Наша первая игра Dark Forest
    Let's play на Dark Forest
    allodsДата: Пятница, 25 Июля 2014, 15:29 | Сообщение # 6345
    почти ветеран
    Сейчас нет на сайте
    кто может сказать .

    Я использую Photon для мульта, где мне хранить данные о игроках? На каком сервере или че еще ?

    Добавлено (25.07.2014, 15:29)
    ---------------------------------------------
    я нащел MySQL

    LaushДата: Пятница, 25 Июля 2014, 16:03 | Сообщение # 6346
    почти ветеран
    Сейчас нет на сайте
    White9 Это же я думаю на производительность будет влиять, или нет?
    В метод update пишу, оно ошибку выдаёт
    Цитата
    Assets/PositionZ.cs(13,27): error CS1612: Cannot modify a value type return value of `UnityEngine.Transform.position'. Consider storing the value in a temporary variable


    [PC/Android/iOS/WEB] 30 Days to survive
    [PC] Dead Defense
    [PC] Саламандра - история пирата
    JonLivingstonДата: Пятница, 25 Июля 2014, 16:07 | Сообщение # 6347
    почетный гость
    Сейчас нет на сайте
    Laush, а почему бы не попробовать так

    Код
    transform.position = new Vector3(transform.position.x, transform.position.y, 0);


    "Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах
    Наша первая игра Dark Forest
    Let's play на Dark Forest
    GantZ_YakaДата: Пятница, 25 Июля 2014, 19:09 | Сообщение # 6348
    почетный гость
    Сейчас нет на сайте
    JonLivingston, можно попробовать в кадре, с которого должна проигрывается анимация, добавить ключи анимации для каждой кости в 3d редакторе.
    JonLivingstonДата: Воскресенье, 27 Июля 2014, 19:43 | Сообщение # 6349
    почетный гость
    Сейчас нет на сайте
    GantZ_Yaka, это изначально было сделано, поэтому проблема вероятно в другом.

    "Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах
    Наша первая игра Dark Forest
    Let's play на Dark Forest
    AdomДата: Понедельник, 28 Июля 2014, 18:08 | Сообщение # 6350
    Печенька!
    Сейчас нет на сайте
    Создал новый проект в Unity . И уже столкнулся с проблемой . Когда пытаюсь добавить любой скрипт на объект вылазит это.
    Can't add component "Скрипт" because it doesn't exist.
    Check to see if the file name and class name match
    Я это перевел и оказывается что данного скрипта вообще не существует. Потом я создал новый скрипт в этом проекте ,но результат тот-же .
    И еще внизу выходит такая ошибка при входе в Unity.
    Код
    Could not start compilationApplicationException: Unable to find csharp compiler in C:/Program Files/Unity/Editor/Data/Mono\lib/mono/unity
    UnityEditor.Scripting.Compilers.MonoCSharpCompiler.GetCompilerPath (System.Collections.Generic.List`1 arguments) (at C:/BuildAgent/work/d63dfc6385190b60/Editor/Mono/Scripting/Compilers/MonoCSharpCompiler.cs:72)
    UnityEditor.Scripting.Compilers.MonoCSharpCompiler.StartCompiler () (at C:/BuildAgent/work/d63dfc6385190b60/Editor/Mono/Scripting/Compilers/MonoCSharpCompiler.cs:43)
    UnityEditor.Scripting.Compilers.ScriptCompilerBase.BeginCompiling () (at C:/BuildAgent/work/d63dfc6385190b60/Editor/Mono/Scripting/Compilers/ScriptCompilerBase.cs:47)

    Добавлено (28.07.2014, 14:51)
    ---------------------------------------------
    Неужели придется переустанавливать Unity ?

    Добавлено (28.07.2014, 18:08)
    ---------------------------------------------
    В общем переустановил ...

    MadMandarinДата: Вторник, 29 Июля 2014, 16:39 | Сообщение # 6351
    уже был
    Сейчас нет на сайте
    Прошу помогите с таким вопросом.
    Пишу одну маленькую игрушку для android, но сейчас захотелось что бы игра могла просматривать изображения из папки image а потом выводить их, как получше это можно реализовать?
    AdomДата: Вторник, 29 Июля 2014, 19:47 | Сообщение # 6352
    Печенька!
    Сейчас нет на сайте
    Возможно была такая тема , но я не смог найти поэтому извините. А вопрос таков . Как перед созданием объекта в точке была полупрозрачная модель ? Что-бы игрок понял как все будет выглядеть до постановки объекта ? Такое есть в The forest.
    buftlerДата: Среда, 30 Июля 2014, 15:48 | Сообщение # 6353

    Добряк

    Сейчас нет на сайте
    Adom, альфа канал в материале объекта ставим на нужное значение renderer.material.color = new color32(r,g,b,A); А значение прозрачности
    могу ошибаться в написание функции но общий смысл таков, у объекта есть переменная int если много состояний или bool если два(создан и не создан) если объект не создан то добавляем к цвету материала прозрачность

    Добавлено (30.07.2014, 15:48)
    ---------------------------------------------
    Adom, альфа канал в материале объекта ставим на нужное значение renderer.material.color = new color32(r,g,b,A); А значение прозрачности
    могу ошибаться в написание функции но общий смысл таков, у объекта есть переменная int если много состояний или bool если два(создан и не создан) если объект не создан то добавляем к цвету материала прозрачность

    AdomДата: Среда, 30 Июля 2014, 16:11 | Сообщение # 6354
    Печенька!
    Сейчас нет на сайте
    buftler, Спасибо
    buftlerДата: Среда, 30 Июля 2014, 22:06 | Сообщение # 6355

    Добряк

    Сейчас нет на сайте
    Adom, не за что)
    allodsДата: Среда, 30 Июля 2014, 23:44 | Сообщение # 6356
    почти ветеран
    Сейчас нет на сайте
    кто знает почему не возможно произвести анимацию

    public AnimationClip[] animAttacks;

    anim.Play (animAttacks[atRand]);

    atRand просто Random

    вот такая ошибка

    Assets/Plugins/controller.cs(50,38): error CS1502: The best overloaded method match for `UnityEngine.Animation.Play(UnityEngine.PlayMode)' has some invalid arguments

    Добавлено (30.07.2014, 23:44)
    ---------------------------------------------
    сделал через string работает , пришлось в ручную прописывать названия анимаций angry

    AstralangelДата: Четверг, 31 Июля 2014, 00:00 | Сообщение # 6357
    STF Games
    Сейчас нет на сайте
    Цитата allods ()
    atRand просто Random

    Как это просто Random? Можно весь кусок кода пожалуйста?


    Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
    allodsДата: Четверг, 31 Июля 2014, 00:18 | Сообщение # 6358
    почти ветеран
    Сейчас нет на сайте
    да тут и кусок кода не нужен

    atRand=Random.Range(0,animAttacks.Length);

    Добавлено (31.07.2014, 00:18)
    ---------------------------------------------
    не в это дело так как через string работает

    ArtanielДата: Суббота, 02 Августа 2014, 02:38 | Сообщение # 6359
    частый гость
    Сейчас нет на сайте
    allods, осмелюсь предположить что Random.Range() возвращает дробное число. Оно не может быть индексом в массиве. Проблему может решить приведение к int, т.е. например
    Код
    anim.Play (animAttacks[(int)atRand]);

    Если бы в показанном участке кода было бы видно где это atRand объявлено, возможно было бы проще о нем говорить.

    Если не сработает, посмотри вообще принимает ли Animation.Play() объекты типа AnimationClip.


    Сообщение отредактировал Artaniel - Суббота, 02 Августа 2014, 02:51
    JonLivingstonДата: Суббота, 02 Августа 2014, 19:38 | Сообщение # 6360
    почетный гость
    Сейчас нет на сайте
    Artaniel, нет, на сколько я помню, Random.Range возвращает целые числа. Проблема скорее всего в том, что
    Цитата Artaniel ()
    вообще принимает ли Animation.Play() объекты типа AnimationClip

    Я бы попробовал сделать что-то типа

    Код
    anim.Play (animAttacks[atRand].name);


    "Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах
    Наша первая игра Dark Forest
    Let's play на Dark Forest
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг