Пятница, 29 Марта 2024, 09:19

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Записи участника » mrFrankenstein [34]
Результаты поиска
mrFrankensteinДата: Пятница, 03 Июня 2022, 11:29 | Сообщение # 1 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата Storm54 ()
Если станет слишком много вызовов отрисовки (draw calls), то можно в несколько строчек эти меши объединить


именно это из-за этого я всем этим и занялся. Спасибо за подсказку, сейчас сяду пробовать)

Цитата drcrack ()
Ты почти изобрел frustum culling


это было бы второй моей целью, т.к. базовый рендерит всё что перед камерой, а не только то, что видно. А поскольку у меня под 2000 базовых обьектов (это только основные) то и вызовов отрисовки какое-то неймоверное количество, особенно если зайти в край уровня и посмотреть назад...
Сейчас с комбайном попробю и, если что, вернусь)

Добавлено (06 Июня 2022, 14:00)
---------------------------------------------
так... Я попробовал комбинировать меши и всё получилось отлично и батчей стало намного меньше (спасибо друзья), но...
У меня имеется целая куча одинаковых квадратиков для пола и потолка, меши которых комбинируются в первую очередь и с ними есть некоторая проблема.
https://imgur.com/EdmVkAi

Их меши тупо приклеиваются друг к другу (как с лева), из-за чего остается неимоверное количество треугольников, которые просто не нужны. Есть ли какой-нибудь способ пересчитать скомбинированный меш так, чтобы убрать лишнее?

Добавлено (06 Июня 2022, 15:14)
---------------------------------------------
Как я понял, CombineMeshes берёт объекты и перекладывает их матрицы в массив, а потом по массиву лепит это всё друг к другу. И я подумал, что наверное можно попробовать проверить матрицы на точки , которые есть у нескольких объектов сразу и избавится от них (если это возможно).
https://imgur.com/V58gnHr

Проблема только в том, что я хз как обращаться с матрицами и никогда их даже не трогал, а инфы которая всё это разжевывает я не могу найти:(
Кто-нибудь может знает где смотреть?

Добавлено (16 Июля 2022, 14:28)
---------------------------------------------
Прошлые разы мне тут очень помогали, может и сейчс помогут)
Мне надо в один контейнер упаковать (или сделать что-нибудь близкое к этому) переменные типа булеан, флоат, стринг и вектор3, а потом запихнуть этот контейнер в список, чтобы можно было легко перебирать эти контейнеры и менять их при необходимости. При чём количество таких контейнеров не известно. вот.
если можете сказать что почитать по этому поводу- буду очень признателен, ато я даже не знаю с чего подступится...

mrFrankensteinДата: Вторник, 31 Мая 2022, 19:02 | Сообщение # 2 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата drcrack ()
Обнови Unity и URP


Даже как-то стыдно за себя стало... Спасибо)

Добавлено (02 Июня 2022, 14:09)
---------------------------------------------
Я тут глупость одну придумал и вот совета у вас хочу спросить.

Мой уровень строится при старте сцены, и оптимизировать его мне практически нечем (или я просто плохо учился). И я подумал "А не могу ли я использовать тут хаб для статичных объектов?" Ну тоесть уровень строится, расставляются декорации и свет, строится навмеш, а потом всё заменяется на не реагирующие со светом примитивы (кубы или шары), сохраняющие местоположение, размер и название объекта. На каждый такой примитив вешается скрипт, который по функции "OnBecameVisible" меняет примитив на нужный объект из хаба, а когда тот "OnBecameInvisible"- всё меняется обратно.

Вроде всё просто, а всё ровно кажется, что херня какая-то получится... Что скажете на это?

mrFrankensteinДата: Воскресенье, 29 Мая 2022, 23:29 | Сообщение # 3 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата drcrack ()
В чем проблема-то, в том что теней нет? Включи или запеки)

И ещё про это.
https://imgur.com/XRXQNkq


Тама вот написано "Realtime shadows for point lights are not supported. Either disable shadows or set the light mode to
Baked." что в переводе на наш означает "Тени в реальном времени для точечных источников света не поддерживаются. Либо отключите тени, либо установите режим освещения на
Запеченный." если верить переводчику.

Вот чего хочу спрсить: А как, собсно тени-то включить? в статье аткого ничего не нашёл, или просто не туда смотрю. Я хз в общем(
Версия Unity 2020.3.31f1 (64-bit)


Сообщение отредактировал mrFrankenstein - Воскресенье, 29 Мая 2022, 23:33
mrFrankensteinДата: Пятница, 27 Мая 2022, 13:03 | Сообщение # 4 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата drcrack ()
И я не совсем понял логики, если ты считаешь, что их нет, почему тебя удивляет их отсутствие на скриншоте?

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

Цитата drcrack ()
Когда-то давно не было (кроме одного directional с тенями), сейчас есть для всего
https://docs.unity3d.com/Package....RP.html

От за это спасибо! За это прям до земли поклон)
mrFrankensteinДата: Четверг, 26 Мая 2022, 15:27 | Сообщение # 5 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата drcrack ()
В чем проблема-то, в том что теней нет? Включи или запеки)

Нет, тут-то как раз всё норм. Как я понял ил не должно быть. В Universal Render Pipeline, как я понял, нет риалтаймовых теней, а запечь я не могу т.к. у меня динамически генерируемая сцена, о чём я и говорил выше. Тут проблема в другом: свет распространяется на объект, который находится за коллайдером. Тут я выкрутил яркость, чтобы было нагляднее.
https://imgur.com/a/CQrmE0q

mrFrankensteinДата: Среда, 25 Мая 2022, 13:25 | Сообщение # 6 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата seaman ()
На CGpersia есть такой пак:

Спасибо)

Добавлено (25 Мая 2022, 13:33)
---------------------------------------------
https://imgur.com/a/xv3Vnx8


Может кто знает как исправить подобное?
поставил Universal Render Pipeline и даже не знаю куда теперь ткнутся...


Сообщение отредактировал mrFrankenstein - Среда, 25 Мая 2022, 13:35
mrFrankensteinДата: Четверг, 14 Апреля 2022, 18:46 | Сообщение # 7 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата Spring ()
написать свою или купить стороннюю Occlusion Culling.
GDOC

Спасибо, этот реддит я тоже читал. GDOC работает чересчур медленно, хотя и хорошо.Если бы я его купил- был бы очень недоволен. Хорошо, что попробовал так. Йо хо хо:)
А ещё я нашёл такую штуку:Frustum Culling. Найти её нельзя, а купить уже не получается(( Если кто-то знает что-нибудь подобной- дайте знать пожалуйста
mrFrankensteinДата: Вторник, 05 Апреля 2022, 23:05 | Сообщение # 8 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата Spring ()
Using occlusion culling with dynamic GameObjects

Прочитал. Перечитал. Ещё перечитал. Перевёл и перечитал. Нихрена не понял как работает.Что бы я не ставил в рендере, статический или динамический обьект- всё одно. Вот фото того что получилось.
¯\_(ツ)_/¯
Помогите(


Сообщение отредактировал mrFrankenstein - Вторник, 05 Апреля 2022, 23:08
mrFrankensteinДата: Суббота, 02 Апреля 2022, 00:25 | Сообщение # 9 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Есть вопрос, но он наверное немного не по теме.
У меня динамически генерируемая сцена, собирается она как мозаика в самом старте сцены из готовых префабов. И вот по этому у меня проблемы с оклюжином (Occlusion Culling): запекание не сделаешь, т.к. на самой сцене есть только один начальный префаб, а как с динамикой работать я не нашёл(
Подскажите как можно выйти из этой ситуации, ато я ума не приложу(
mrFrankensteinДата: Среда, 13 Мая 2020, 18:32 | Сообщение # 10 | Тема: Защита от пересечения генерируемых объектов
частый гость
Сейчас нет на сайте
Да вот нет, мне кажется, что как раз обойдешься. И Physics.OverlapBox, возможно, как раз то, что я ищу. Заранее спасибо)

Сейчас код выглядит так

Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CaveCreator : MonoBehaviour
{
public GameObject[] caveSpavnPoint;    //хранилище найденых точек установки частей пещеры
public GameObject[] spawnObjects;    //устанавливаемые обьекты
public GameObject[] spawnedObj;    //установленные обьекты
public int caveLong;    // задаём длинну пещеры

private int I=0;    //счётчик длинны пещеры
private GameObject Instantiat;    //надо подумать как без этого
public Bounds b;    //попробуем с бондами избавится от пересечения

void Start()
{
spawnedObj= new GameObject[caveLong];    //устанавливаем длинну массива
}

void Update()
{
if(caveLong>I)    //если ещё надо ставить куски то...
{
caveSpavnPoint = GameObject.FindGameObjectsWithTag("CaveSpawnPoint");    //ищем все точки для спавна
if(caveSpavnPoint.Length>=2)    //если нашлось больше 2-х точек то...
{
GameObject spawn = new GameObject();    //создаём обьект для выбора рондомного кусочка
spawn=caveSpavnPoint[Random.Range(0,(caveSpavnPoint.Length-1))];    //выбераем кусочек
Instantiat=GameObject.Instantiate(spawnObjects[Random.Range(0,(spawnObjects.Length-1))],spawn.transform.position,spawn.transform.rotation) as GameObject;    //ставим кусочек
spawnedObj[I]=Instantiat;    //записываем установленный кусочек в массив
Destroy(spawn);    //удаляем точку спавна
b = new Bounds(spawnedObj[I].transform.Find("main").position, new Vector3(112, 112, 12));    //пытаюсь разобраться с бондами
}
else    //если точек спавна мень 2-х то...
{
Instantiat=GameObject.Instantiate(spawnObjects[0],caveSpavnPoint[0].transform.position,caveSpavnPoint[0].transform.rotation) as GameObject;    //не мудрствуя лукаво ставим кусочек
spawnedObj[I]=Instantiat;    //записываем установленный кусочек в массив
Destroy(caveSpavnPoint[0]);    //удаляем точку спавна
}
I++;    //рибавляем 1 к счётчику
}
}
}

Посмотрим, что из него получится)

Добавлено (14 Мая 2020, 23:44)
---------------------------------------------
И вот я снова тут. Это было сложно, но я что-то сделал crazy
По крайней мере оно работает и даже так, как я хотел)
А вот собственно и код. Если есть замечания и предложения- бичуйте меня по чём зря! Нечего тут рассусоливать! Если говно- то и говорите что говно, но с оговорками что и как можно исправить)

Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CaveCreator : MonoBehaviour
{
    public Vector3 startPointPos;  //запомнить стартовую позицию
    public Quaternion startPointRot;  //и направление
    public int misTry;  //счётчик неудачных установок

    public GameObject[] caveSpavnPoint;    //хранилище найденых точек установки частей пещеры
    public GameObject[] spawnObjects;    //устанавливаемые обьекты
    public GameObject[] spawnRums;    //обьект для выбора онончаний тонелей
    public GameObject[] spawnedObj;    //установленные обьекты
    public GameObject spawn;    //обьект для выбора рондомного кусочка
    public int caveLong;    // задаём длинну пещеры

    private int I=0;    //счётчик длинны пещеры
    private GameObject Instantiat;    //надо подумать как без этого
    
    bool Started;  //для гизмо для инспектора. Удалить по окончании!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    //чтобы не создавать новые переменные во время работы кода
    //создаём переменные, в кторые будут сохранятся переменные колайдёра
    //для проверки столкновений с другими коллайдёрами
    Vector3 positionOfCave;  //сохраняем позицию
    Vector3 sizeOfCave;   //и размер
    Quaternion rotOfCave;  //и направление

    void Start()
    {
        spawnedObj= new GameObject[(caveLong+10)];    //устанавливаем длинну массива
        Started = true;  //это штука для работы гизмо в инспекторе. Удалить!!!!!!!!!!!!!!!!!!!!!!!!!
        startPointPos=GameObject.FindWithTag("CaveSpawnPoint").transform.position;  //запоминаем стартовую позицию
        startPointRot=GameObject.FindWithTag("CaveSpawnPoint").transform.rotation;  //и направление обьекта, из которого будет начинаться пещера
    }

    void Update()
    {
     if(misTry>25)  //если ошибок больше 25
     {
      misTry=0;  //обнуляем счётчик ошибок
      GameObject star = new GameObject();  //создаём новый обьект в сцене. Да, от этого все эти непонятные "New Game Objeсt". Больше не использую такую нострукцию
      star.transform.position=startPointPos;  //задаём обьекту нужную позицию
      star.transform.rotation=startPointRot;  //и напавление
      star.tag = "CaveSpawnPoint";  //и нужный таг тоже

      for(int i=0; i<spawnedObj.Length-1; i++)  //циклом удаляем все уже созданные обьекты
      {
       Destroy(spawnedObj[i]);  
      }

      spawnedObj= new GameObject[caveLong+10];  //обуляем массив созданных обьектов чтоб наверняка
      I=0;  //ну и обнуляем счётчик длинны пещеры
     }
     else  //если ошибок не больше 25, то
     {
      caveSpavnPoint = GameObject.FindGameObjectsWithTag("CaveSpawnPoint");    //ищем все точки для спавна
      if(caveSpavnPoint.Length >0)    //если ещё надо ставить куски то...
      {
       spawn=caveSpavnPoint[Random.Range(0,(caveSpavnPoint.Length-1))];    //берём случайный кусочек

       if(caveSpavnPoint.Length +I <= caveLong)  //если не достаточно проходов и не нужно ставить комнаты
       {
        Instantiat=GameObject.Instantiate(spawnObjects[Random.Range(0,spawnObjects.Length)],spawn.transform.position,spawn.transform.rotation) as GameObject;    //ставим кусочек
       }
       else  //если достаточно проходов и нужно ставить комнаты
       {
        Instantiat=GameObject.Instantiate(spawnRums[Random.Range(0,spawnRums.Length)],spawn.transform.position,spawn.transform.rotation) as GameObject;    //ставим комнаты
       }
       spawnedObj[I]=Instantiat;  //записываем установленный кусочек в массив
       string nam=I.ToString();  //переводим цифры в буквы
       spawnedObj[I].name=nam ;  //переименовываем установленный кусочек в номер
      
          positionOfCave=spawnedObj[I].transform.Find("box").transform.position;  //из только что установленного кусочка выдераем обьект, который размерами как комната, только это простой квадрат
          sizeOfCave=spawnedObj[I].transform.Find("box").GetComponent<Collider>().bounds.size;  //выдераем из квадрата его размер в мировых кординатах
          rotOfCave=spawnedObj[I].transform.rotation;  //и направление

          spawnedObj[I].SetActive(false);  //основной же обьект скрываем на время проверки
          Collider[] colliders = Physics.OverlapBox(positionOfCave, sizeOfCave, rotOfCave);  //собственно, делаем проверку

          if(colliders.Length>=1)  //если проверка показала, что мы чего-то касаемся, то...
          {
           misTry++;  //+1 в ошибки
           Destroy(spawnedObj[I]);  //удаляем установленный обьект
          }
          else  //если проверка показала, что мы ничего не касаемся, то...
          {
           misTry=0;  //обнуляем счётчик ошибок
           spawnedObj[I].SetActive(true);  //включаем наш главный обьект
           Destroy(spawnedObj[I].transform.Find("box").gameObject);  //удаляем уже ненужный квадрат
           Destroy(spawn);    //удаляем точку спавна
           I++;    //прибавляем 1 к счётчику
          }
      }
  }
    }

    void OnDrawGizmos()  //эта штака нужна только для гизмо в инспекторе. Удалить!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    {
        Gizmos.color = Color.red;
        if (Started)
            Gizmos.DrawWireCube(positionOfCave, sizeOfCave);
    }
}


Сообщение отредактировал mrFrankenstein - Среда, 13 Мая 2020, 18:33
mrFrankensteinДата: Воскресенье, 10 Мая 2020, 22:49 | Сообщение # 11 | Тема: Защита от пересечения генерируемых объектов
частый гость
Сейчас нет на сайте
На сцене перед началом игры случайно генерируются части уровня, всячески поворачивая и закручиваясь. Иногда они закручиваются сами в себя, а иногда большой кусок ставится в маленькой пространство. вот как-то так получается http://s1.uploadpics.ru/images/-yyDLbFjpB.png
Надо как-то придумать проверку для того, чтобы знать когда можно ставить кусочки а когда нельзя, а я не могу придумать(
Помогите :)

Добавлено (12 Мая 2020, 18:24)
---------------------------------------------
Короче. Рас уж никто мне не может помочь, то буду делать сам и пусть вам, дорогие друзья, будет стыдно crazy
На данный момент придумал я такую штуку: перед установкой нужного объекта на своё место на это место ставится примитив (куб) который ещё и триггер. Триггер меняет размеры примерно имитируя размеры возможных комнат, а результаты пишутся в массив. Если такой-то размер задевает другие объекты, то комнату такого-то размера суда ставить нельзя. Осталось только придумать, как в нулевой промежуток времени (между строчками кода) проверить касается ли триггера что-нибудь или нет, т.к. OnTriggerStay-Enter работают не так, да и вдобавок енто в дугом скрипте делается, а я так не хочу.
Короче, пойду искать инфу. Вернусь завтра ^_^ ну, или когда там получится)


Сообщение отредактировал mrFrankenstein - Вторник, 12 Мая 2020, 18:27
mrFrankensteinДата: Воскресенье, 30 Октября 2016, 15:56 | Сообщение # 12 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата EchoIT ()
EchoIT
Ааа... простите, не понял сразу)
mrFrankensteinДата: Воскресенье, 30 Октября 2016, 14:39 | Сообщение # 13 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата Ranger ()
сделай 1 неуничтожаемый синглтон объект, который управляет ресурсами. к нему и обращайся.

Это сложно, учитывая, что должно быть больше 10-ка сцен. Да и делать так- не универсально, а значит не применимо к моей ситуации... Тавтология получилась...
Цитата EchoIT ()
EchoIT

Почему вы думаете, что при большом количестве сцен будут ошибки? Если соблюдать иерархию ресурсов- всё будет в порядке, мне кажеться...

Вот меня какая идея посетила только что: Что если, не нужно будет менять сцены, что если можно будет добавлять на сцену огромные префабы с территорией (Вместе со всеми объектами на ней). Сделать какую-нибудь буферную локацию, типа лифта или пещеры с коридором, и через триггер добавлять новую территорию и удалять старую? Как думаете, стоит за это браться?


Сообщение отредактировал mrFrankenstein - Воскресенье, 30 Октября 2016, 14:43
mrFrankensteinДата: Суббота, 29 Октября 2016, 04:42 | Сообщение # 14 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата EchoIT ()
действительно удобнее.

Это более чем верно, НО (!) не в этом случае. Я знаю как перетаскивать в инспектор нужный файл, но мне надо чтобы этот файл читался на прямую из памяти. Во первых: по тому, что (мне кажется) иметь на сцене добрый десяток скрытых объектов - не самая лучшая идея (имеется в виду модели оружия в которых будут вспышки-стрижки-шишки и ещё Бог знает что). Особенно это не удобно, когда переходишь с одной сцены на другую. Все префабы (кроме статичных конечно) нужно обратно перешерстить и проверить всё ли правильно работает, и работает ли вообще...

Во вторых: мне кажется, что эта функция ( Resources.Load(), если это то что нужно ) мне в будущем понадобиться. Если вы сможете объяснить или хотя бы подсказать где посмотреть (желательно на русском) про это, я буду очень благодарен))) И кстати, может быть вы знаете, где можно посмотреть информацию по оптимизации (желательно на русском. Можно и на Енглише если есть, но на Русском предпочтительнее)?


Сообщение отредактировал mrFrankenstein - Суббота, 29 Октября 2016, 04:44
mrFrankensteinДата: Пятница, 28 Октября 2016, 07:45 | Сообщение # 15 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Цитата dimaantipanov ()
перенести и выставить координаты не получиться?

Должен появляться префаб с искрами при каждом выстреле. Как вы думаете, как часто я смогу переносить и выставлять его "руками"? Это нужно делать это через скрипт, правильно думаете.
mrFrankensteinДата: Четверг, 27 Октября 2016, 21:01 | Сообщение # 16 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Приветствую вас! Подскажите пожалуйста, каким образом можно осуществить Инстанцировать (Instantiate) префаб на определённые координаторы напрямую из папки Assets. Это вообще возможно? Буду очень рад каждому совету)
mrFrankensteinДата: Среда, 07 Сентября 2016, 19:51 | Сообщение # 17 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Спасибо!)))

Сообщение отредактировал mrFrankenstein - Среда, 07 Сентября 2016, 19:51
mrFrankensteinДата: Среда, 07 Сентября 2016, 19:21 | Сообщение # 18 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Простите меня, я неправильно выразился. Не анимированный спрайт, а анимированный UI)
mrFrankensteinДата: Среда, 07 Сентября 2016, 18:35 | Сообщение # 19 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Я просто не знаю ничего об этом, ни о падении производительности, ни о конвертерах. Я новичок в о всём, что касается Unity3d, так что не ругайтесь)
Лучше скажите, что значит "разложение в атлас со всеми настройками"?

Добавлено (07 сентября 2016, 18:35)
---------------------------------------------
Или ещё лучше, подскажите как сделать анимированный спрайт, без потери производительности)

mrFrankensteinДата: Среда, 07 Сентября 2016, 01:23 | Сообщение # 20 | Тема: Вопрос-[ответ] по Unity
частый гость
Сейчас нет на сайте
Скажите, как добавить Gif в UI так, чтобы она продолжила воспроизводиться?
Форум игроделов » Записи участника » mrFrankenstein [34]
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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