Ответы пользователя по тегу C#
  • Как отобразить изменение прогресса воспроизведения клипа?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Используте небось как-то не верно. Проставляете небось значение, вместо просто считать. или на Update запускаете корунтину за корунтиной))
    Не должно быть никаких проблем просто взять текушее время проигрывания из айдиосорса.проверив играет ли он вообще сейчас.
    Ответ написан
  • Как перемотать воспроизведение аудиоклипа в сурсе?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    https://docs.unity3d.com/ScriptReference/AudioSour...
    но там предупреждение про компреснутые
    и есть вот такой, по сэмплам.
    https://docs.unity3d.com/ScriptReference/AudioSour...
    Ответ написан
  • Как реализовать ресурс, который будет восполняться с течением времени?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Если ресурс критичный и игра онлаин - то с сервера получать и не тужить, а в перерывах между опросом сервера, как devalone предложил - простеишим таймером.

    Если игра офлаин - то тут чтоб между выключениями/сворачиванием игры продолжало копить энергию - вам бы запомнить куда-нибудь (в PlayerPrefs к примеру или просто в фаилик) - время последнего прибавления/подсчета энергии.
    В момент следующего подсчета текущего количества энергии посмотреть сколько прошло времени с прошлого просчета (когда мы запомнили время) - и вуаля..добавить энергии за прошедшие N минут/часов/дней
    Если энергия критична и надо чтоб не читерили к сохраняемому времени добавить соль, хеши, меши и тп) чтоб по крайней мере нельзя было открыть фаилик и подменить время. а вот от перевода времени на устроистве - большой вопрос как защитится). разве что при запомненном времени - позволять потом прибавлять энегрию в минус. наказывая читеров)
    скажем перевел он на год вперед. а потом спустя день отмотал на год назад - и вы у него энергию в минус за год отняли))
    Ответ написан
    Комментировать
  • Как доработать скрипт, так что бы уровень звука был одинаков на всех сценах?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Все же давайте отдельный совет , отдельный ответом дам.
    У вас сейчас настроики звука сильно связанны с самим компонентом воспроизведения.
    По хорошему у вас есть статическая или глобальная (или еще как хотите) структура данных для настроек.
    Аля какой-нибудь класс где есть "громкость", "доп эффекты", "выбранный скин" и тп. просто данные.
    Меню настроек будет позволять эти данные изменить и сохранить.
    А вот скрипт занимающийся воспроизведением - обратиться к этим данным и использует их.

    к примеру если назвать класс с настройками GlobalSettings))
    public class GlobalSettings
    {
     public static float musicVolume;
    }

    то из него берем громкость для скрипта где управляем музыкой
    public void Update()
        {
            AudioListener.volume = GlobalSettings.musicVolume;
            
        }

    а вот изменение положение слайдера - будет менять нашу новую глобальную переменную)
    float newVolume = //тут как нибудь получаете новое значение 
    // к примеру из эвента  ChangeValue() в слайдере..или еще как 
    GlobalSettings.musicVolume = newVolume ;


    надеюсь я донес общий принцип и смысл того , как я бы сделал настройки
    (код писал так из головы, возможны опечатки и неточности, но тут смысл и вариант решения доносил, а не код за вас писал)
    Ответ написан
    3 комментария
  • Как использовать переменную из одного скрипта в другом?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Если сцены не загружены обе в текущий момент - то вы не можете постучаться из одной в другую.
    Это все равно что пробовать найти кровать на кухне. (кухня, спальня - разные комнаты/сцены)
    Вам или делать это статичным классом/переменной, или не уничтожаемый объект , который будет оставаться в сцене при загрузке новой.
    Или все же подгрузить аддитивно обе сцены..чтоб можно было искать в обоих)

    Используя аналогию выше, вы построили бы не кухню или спальню. а дом из кухни и спальни, а там уже искали бы свою кровать в них)
    Ответ написан
    Комментировать
  • Как принято делать фабрику предметов?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    "Но тогда возникает вопрос, а как быть, если я хочу хранить спрайты оружия и их в модель меча передавать? Ведь без MonoBehaviour я не смогу назначить спрайты в инспекторе."

    Предложил бы отдельно хранить этакие "Ресурсы/Ассеты для оружия".
    Какой-нибудь список где по айдишнику оружия, вы можете достать спраит, описание текстовое, модель..что угодно.
    Методы для работы со списком возможно для удобства и всей этой инкапсуляции и тд.

    Тогда логика оружия условно будет отделена от представления его. Хотите показать мечь - достали спраит из ресурсов - и показали его. а все остальное время храним набор айдишников.
    Ответ написан
    Комментировать
  • Как получить доступ ко всем подпапкам директории?

    MrMureno
    @MrMureno
    VR for all
    https://msdn.microsoft.com/ru-ru/library/ms143325(...

    есть перегрузка GetDirectories где можно указать опции поиска, в том числе поиск по подкаталогам
    Ответ написан
  • Как сделать так, что бы камера двигалась за персонажем и при этом Вращалась и Увеличивалась?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Вы уж извините, но описание как в World of Warships - так себе пояснение. или видео искать или вообще качать игру, чтоб посмотреть как камера вращается. а вам "так же как там" только без пары режимов.(слава богу по коду вроде понятно что вы хотите)

    так вот, на сколько я понял, вы хотите по сфере вокруг цели вращаться камерой и иметь возможность менять радиус.

    тогда предложил бы просто использовать сферические координаты
    relativePosition = SphericalToCartesian(longitude, latitude, orbitRadius);
    transform.position = target.transform.position + relativePosition;
    
    private Vector3 SphericalToCartesian(float longitude, float latitude, float radius)
        {
            float x = radius * Mathf.Sin(latitude) * Mathf.Cos(longitude);
            float y = radius * Mathf.Cos(latitude);
            float z = radius * Mathf.Sin(latitude) * Mathf.Sin(longitude);
            return new Vector3(x, y, z);
        }


    По сути у вас есть долгота и широта (как на глобусе) и радиус сферы.
    Вычисляете координаты на сфере и плюсуете их к позиции target.

    Менять широту, долготу и радиус на основе инпута - тут я вижу вы в курсе как.

    ну и так к слову- скрипт тут на пару десятков строк, и мало связанный с другим функционалом - даже весь переписав - капитальным ремонтом это сложно назвать
    Ответ написан
  • Как сделать случайную генерацию объектов по координатам заданным в массиве unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    В общем то проще простого
    - как создать объекты я так понимаю вы знаете.
    - как создать список координат тоже

    Код не точный , а просто показать принцип
    - цилк - по количеству объектов , которые хотим сгенерировать.
    - выбирает рандомную позицию в списке
    - генерируем в этой позиции объект
    - удаляем эту позицию из списка (в этом месте больше уже не сгенерируем, и в следующих раз выбирать будет из меньшего числа доступных позиций)
    for(i=0;i<NeededNumdersOfObject;i++)
    {
         int randomNumber = RandomRange(0,listOfTransforms.Count);
         Instantiate(Object,listOfTransforms[randomNumber ].position,....);
         listOfTransforms.RemoveAt(randomNumber)
    }


    только проверьте что точек размещения в списке больше, чем число объектов которые хотите сгенерировать.
    и еще можно делать копию списка , так как после удаления из него элементов в процессе генерации - повторно его уже не используешь.
    Ответ написан
    4 комментария
  • Как преобразовать JSONObject в string на Unity с socket.io?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    https://docs.unity3d.com/ScriptReference/JsonUtili...

    сделайте сначала json по формату. передайте с сервера именно Json
    {"xCoords":"player.x","yCoords":"player.y","zCoords":"player.z"} - к примеру, если хотите строки передать.
    тут можете проверить что все правильно парсится.
    ну а дальше уже проще - работайте с джисоном как в документации сказанно.
    Ответ написан
  • Что означает символ :X?

    MrMureno
    @MrMureno
    VR for all
    0x81 - число заданно в 16ричной системе счисления. и вывод сделан под 16-ричную.
    Если убрать получаете число в десятеричной.
    Вот и вся магия.
    Ответ написан
    Комментировать
  • Как сделать респавн объекта?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Не удалять объект, а отключить его отображение (и коллайдер чтоб не встать снова) и запомнив стартовую позицию, по таймеру снова включить его, поместив в стартовые координаты.

    Если захотите прям пример кода - то вперед смотреть и читать официальные туториалы от Unity о том как делать базовые вещи.
    Ответ написан
    Комментировать
  • Как передвинуть объект в Unity 3D?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Я бы уточнил что за объект?!
    Если спраит, то так же как у вас в примере (И там тоже Vector3, просто Z координату не обязательно менять)
    посмотрите какие бывают "виды" Translate

    Если же вы про какой-то canvas элемент , то там ужу RectTransform и малость по другому, но тогда вам стоило б описать.

    В любом случае стоило описать что за объект вы двигать собрались)
    Ответ написан
    Комментировать
  • Почему не активируется объект после функции ***.gameObject.SetActive(true);?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    за вызовом childObj.gameObject прячется по сути childObj.FindObject(), а поиск не найдет отключенные объекты.
    Сохраните ссылку сразу на GameObject ,а не на Transform
    Ответ написан
  • Что за ошибка в Unity3d?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    MeshCombineUtility это старый престарый скрипт.
    там в нем есть галочка/настроика связанная с TriangleStrip - такой вариант склеивания неактуален и бесмысленен)
    так вот все это (код который исполняется при этом флаге) можно смело удалить из скрипта и пользоваться как будто этот флаг не вставлен. и будет вам счастье.
    И вообще если вам не нужно склеивать на рантаиме модели - можете вообще весь скрипт и его зависимости удалить.
    Ответ написан
    2 комментария
  • Как заменить картинку в unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Как вам уже и укзали UI.Image.sprite
    только вот не Sprite, а sprite
    И настроики импорта у текстуры/изображения должны быть именно для спраита, не текустура по умолчанию как стоит.

    Другими словами вы не сможете впихнуть в UI текстуру, но сможете спраит.
    Ответ написан
    7 комментариев
  • C#. Как в WebBrowser просто загрузить страницу?

    MrMureno
    @MrMureno
    VR for all
    Не знаю почему вы не воспользовались гуглом, но вам просто надо
    private void Form1_Load(object sender, EventArgs e)
        {
          WebBrowser wb = new WebBrowser();
          wb.AllowNavigation = true;
    
          wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
    
          wb.Navigate("http://www.google.com");
    
       }
    
        private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
          WebBrowser wb = sender as WebBrowser;
          // wb.Document is not null at this point
        }


    И Navigate - это метод, в него нельзя присвоить URI, оно задается параметром метода как в примере выше.
    (это собственно по поводу ошибки CS1656)
    Ответ написан
  • Как добавить библиотеку MySql в Unity проект?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    А разве в гугле не выдало https://habrahabr.ru/post/185594/ ??
    как в статье не помогает?
    Ответ написан
    5 комментариев