Size: a a a

2020 April 15

A

Alexander in unity3d.ru
не все обновились?
источник

SR

Serhii Romanenko in unity3d.ru
Art
Всем привет. Есть проблема с черным экраном на IOS / Android, уже писал по ней, но прошлое решение не прокатило.
Ситуация такая: самой первой грузится сцена, которая должна загрузить последний пройденный уровень из PlayerPrefs.
В этой сцене кроме камеры и простого загрузочного скрипта(который берет уровень из PlayerPrefs) больше ничего нет. Сцену загружаю методом SceneManager.LoadScene(lastScene) без асинхронной загрузки, сразу в Awake загрузочного скрипта. На загрузочной сцене камера solid black (но я убрал с нее тег MainCamera).
И у примерно 1 процента пользователей при загрузке игрового уровня камера остается черной или даже рендерит splash скрин с лого (пока не убрал тег MainCamera у камеры с загрузочной сцены, был только черный экран, после того как убрал тег, иногда вместо черного экрана остается картинка со splash screen). UI при всем этом отображается. Сам я такую ошибку поймать нигде не могу, но жалобы приходят.
В общем каким то образом камера остается со splash скрина или с моего кастомного загрузочного уровня с черной камерой. Кто знает в чем может быть дело и как исправить? Поможет ли асинхронная загрузка нужного уровня?
Можно попробовать избавиться от этой сцены а сделать неудаляемый объект, повесить на него канвас. На канвас кинуть черный фон и возможно текст типа "загрузка". На объекте висит синглтон, который асинхронно загружает сцены, и сам контролит включение / выключение канваса в зависимости от состояния загрузки сцен. Для такой схемы камера не нужна
источник

SR

Serhii Romanenko in unity3d.ru
Асинхронная загрузка в любом случае будет более комфортна т.к. в это время можно что-то крутить игроку на загрузочном скрине, чтоб он не скучал
источник

O

Oleg in unity3d.ru
нужна ваша помощь с битами. необходимо объединить в одно число 2 других, а затем обратно. Пробую так:
int row = 11;
int col = 25;
var result = row | col << 8;
int row2 = result & 0xff;
int col2 = result >> 8;

работает с положительными числами, но не с отрицательными.
источник

A

Art in unity3d.ru
Serhii Romanenko
Асинхронная загрузка в любом случае будет более комфортна т.к. в это время можно что-то крутить игроку на загрузочном скрине, чтоб он не скучал
думаю да, придется ее добавить. спасибо
источник

SR

Serhii Romanenko in unity3d.ru
Oleg
нужна ваша помощь с битами. необходимо объединить в одно число 2 других, а затем обратно. Пробую так:
int row = 11;
int col = 25;
var result = row | col << 8;
int row2 = result & 0xff;
int col2 = result >> 8;

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

O

Oleg in unity3d.ru
от -50 до 50
источник
2020 April 16

FN

Feodosiy Nikitich in unity3d.ru
пачаны, можно как-то сделать, чтобы 2d коллайдер прокал по нажатию/наведению даже если его оверлапит другой коллайдер?
источник

SR

Serhii Romanenko in unity3d.ru
можно через костыль с этим оффсетом. За границы вылазить не должно. На входе все числа +128, условно, а при обратном расчете вычитать
источник

O

Oleg in unity3d.ru
по сути числа превращаются в положительные сохраняються через биты и на выходе от них отнимаеться оффсет...  Спасибо за идею, буду пробовать
источник

SR

Serhii Romanenko in unity3d.ru
Oleg
нужна ваша помощь с битами. необходимо объединить в одно число 2 других, а затем обратно. Пробую так:
int row = 11;
int col = 25;
var result = row | col << 8;
int row2 = result & 0xff;
int col2 = result >> 8;

работает с положительными числами, но не с отрицательными.
Или же отводить по одному биту каждой части под знак
источник

O

Oleg in unity3d.ru
вот не совсе я понимаю как это делать с битами.
источник

O

Oleg in unity3d.ru
не хватает скила с битами(((
источник

O

Oleg in unity3d.ru
а, понял хранить абсолютные значения + последний бит это знак
источник

SR

Serhii Romanenko in unity3d.ru
Что-то в духе
int col = -15;
bool isPositive = math.sign(col);
int value = math.abs(col);
if (!isPositive) value |= 1<<3;
источник

AM

Aleksander Mironov in unity3d.ru
Oleg
а, понял хранить абсолютные значения + последний бит это знак
Или если будете хранить первый бит - придумаете фактические signed int (ну почти)
источник

SR

Serhii Romanenko in unity3d.ru
Serhii Romanenko
Что-то в духе
int col = -15;
bool isPositive = math.sign(col);
int value = math.abs(col);
if (!isPositive) value |= 1<<3;
потом посчитать так же для row и сдвинуть на +4
источник

SR

Serhii Romanenko in unity3d.ru
Могу ошибаться, проверить с телефона тяжело ))
источник

O

Oleg in unity3d.ru
Спасибо за идеи, буду пробовать)
источник

m

mptyy in unity3d.ru
Ребят, можете подсказать, как можно разнообразить подобную игру?
Основа: машина типа сломалась, цель: тупо стоять на месте и отстреливаться
источник