Лоды на коллайдерах(триггерах)

Оптимизация кода.

Лоды на коллайдерах(триггерах)

Сообщение yursiv 30 май 2011, 09:38

Хотелось бы узнать мнения по поводу производительности и организации системки лодов.

Также есть проблема с установкой видимости нужного лода в момент загрузки(основная проблема вроде бы).
При использовании индекса (когда он в нужном диапазоне) - такой же эффект как и без него(при количестве ассетов больше 1), т.е. беспорядочно как-то включаются лоды В МОММЕНТ ЗАГРУЗКИ ЛЕВЕЛА.
Изображение
Т.е. установка стартового индекса для нужного лода не работает.

Стартовый индекс - временное решение - позже хочу сделать установку начального лода в зависимости от положения камеры/игрока; но пока и так не работает
---------------------------------------------
Ассет
http://rghost.ru/8541131
---------------------------------------------
Изображение
---------------------------------------------
LODManager Script
Синтаксис:
Используется csharp
using System.Collections.Generic;
using UnityEngine;

public class LODManager : MonoBehaviour
{
    public List<MeshRenderer> Meshes; //только для Editor скрипта - дублируется в каждом лоде
    public List<int> Distances;  //только для Editor скрипта - для установки размеров коллайдеров
    public int StartIndex;  //единственный обязательный
}

 


-------------------------------------------------------------------------------------------------------------------
LODTrigger Script
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections.Generic;

public class LODTrigger : MonoBehaviour
{
    public MeshRenderer CurrentMesh;
    public List<MeshRenderer> AllMeshes;
    public int CurrentMeshIndex;

    private bool _isNotLast;
    private MeshRenderer _nextLodMesh;

    void Awake()
    {
        AllOff();

        _isNotLast = CurrentMeshIndex < AllMeshes.Count - 1;
        if (_isNotLast)
            _nextLodMesh = AllMeshes[CurrentMeshIndex + 1];

        //ЭТО НЕ РАБОТАЕТ!!!!!!-----------------------------------
       
        var index = transform.parent.gameObject.GetComponent<LODManager>().StartIndex;
        //Если стартовый индекс -1 или больше (количество лодов -1) - все  MeshRenderer изначально выключены
        if (index > -1 && index < AllMeshes.Count)
            AllMeshes[index].enabled = true;

        //ЭТО НЕ РАБОТАЕТ!!!!!!-----------------------------------
    }

    void OnTriggerEnter()
    {
        AllOff();
        CurrentMesh.enabled = true;
    }

    void OnTriggerExit()
    {
        AllOff();
        if (_isNotLast)
            _nextLodMesh.enabled = true;
    }

    private void AllOff()
    {
        AllMeshes.ForEach(mesh => mesh.enabled = false);
    }

}
 
Последний раз редактировалось yursiv 30 май 2011, 10:02, всего редактировалось 1 раз.
Аватара пользователя
yursiv
UNIт
 
Сообщения: 130
Зарегистрирован: 09 ноя 2010, 11:51
Откуда: Харьков

Re: Лоды на коллайдерах(триггерах)

Сообщение burlak 31 май 2011, 11:58

Попробуйте обойтись без индекса - просто укажите ЛОД напрямую.
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: Лоды на коллайдерах(триггерах)

Сообщение yursiv 31 май 2011, 17:13

Помучился немного и решил делать все-таки через FixedUpdate() . Гораздо проще кодить....да и результат устраивает.
Аватара пользователя
yursiv
UNIт
 
Сообщения: 130
Зарегистрирован: 09 ноя 2010, 11:51
Откуда: Харьков

Re: Лоды на коллайдерах(триггерах)

Сообщение Neodrop 31 май 2011, 17:17

1. Не стоит использовать LINQ для таких частых операций как у вас. Теряете производительность. Лучше заменить на for
2. Использование коллайдеров может сильно помешать работе с лучами. Имейте в виду.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Лоды на коллайдерах(триггерах)

Сообщение gnoblin 31 май 2011, 22:37

а как колайдеры мешают лучам?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Лоды на коллайдерах(триггерах)

Сообщение Neodrop 01 июн 2011, 00:39

Слава, тебе просто нечего делать? (popcorn)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт


Вернуться в Код

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1