порт Корсаров на Андроид: Мануалы по Unity

понедельник, 18 августа 2025 г.

Как получить значение переменной из другого скрипта


Посмотрел на то, что умеет нейросеть Gemini, сижуи и думаю, а стоит ли вообще замарачиваться написанием мануалов по скриптам? Если кому-то потребуеться код который был использован в сборке, тотже Chat GPT все разложит по шагам. 

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

═══════⚓═══════

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

Шаги:

1. В скрипте, где находится переменная (например, ScriptA):

2. Объявите переменную как public, чтобы она была доступна из других скриптов.

public class ScriptA : MonoBehaviour

{

public float myFloatValue = 10.0f;

}

3. В скрипте, который получает значение (например, ScriptB) - объявите переменную для хранения ссылки на другой скрипт:

public ScriptA scriptAInstance;
 
// Или другой тип скрипта, который содержит нужную переменную

4. Получите ссылку на экземпляр другого скрипта:

  • Через инспектор: Перетащите объект с ScriptA на слот scriptAInstance в инспекторе ScriptB.
  • Программным путем (например, через FindObjectOfType или GetComponent):
// Пример получения по типу скрипта

scriptAInstance = FindObjectOfType<ScriptA>();

5. Получите значение переменной.

float receivedValue = scriptAInstance.myFloatValue;

Debug.Log("Полученное значение: " + receivedValue);
👉В скрипте ScriptB для использования полученого зачения нужно использовать имя переменой receivedValue, а ни myFloatValue из скрипта ScriptA.

Важно:
  • Убедитесь, что объект, на который ссылается scriptAInstance, существует и имеет прикрепленный ScriptA.
  • При использовании namespaces, в скрипте ScriptB в директиве using необходимо указать выбранное пространсвенное имя заданное в ScriptA, чтобы компилятор мог его найти.
  • Если вы используете FindObjectOfType, убедитесь, что ScriptA был создан и активен на сцене, когда выполняется ScriptB.

воскресенье, 23 февраля 2025 г.

Экспорт модели из 3D Max в Unity

Корсары Андроид
Новая модель Николаса Шарпа v 0.5

В 3D Max в отличии от Unity поверхность отображается в обе стороны, а в Unity только в одну

вторник, 11 февраля 2025 г.

30 vs 60 FPS


Вечный холиварн... Одни говорят, что для комфортной игры вполне хватает 30 FPS, киберспортсменам подавай 120  FPS, иначе катку затащить не смогут, любители синематографа вообще утверждают, что человеческий глаз не может распознать более 24 кадров в секунду. Но давайте сначала разберемся, сколько кадров сможет отрисовать наш экран, только уже ни монитора, а нашего телефона. В этом нам поможет AIDA64. Заходим в Отображение и ищем строчку Частота обновления 

Redmi Note 8

Правда, сейчас телефоном с частотой обновления экрана 120 Ghz ни кого не удивишь. Тем не менее, не смотря на все это дело, Unity выставляет частоту обновления экрана для мобильных телефонов - 30 FPS, нет не потому, что разработчики приверженцы одной из сторон спора, это сделано специально, для экономии заряда батареи. В настройках "Player Settings..." параметрами V sync count  частоту обновления экрана уже не изменить, поменять на другое значение можно только через скрипт:
using UnityEngine;

public class My60FPS : MonoBehaviour

{
    void Start()

    {

Application.targetFrameRate = 60;

    }

 }
Вешается на любой объект в сцене, на пример на камеру. В данном случае, частота обновления экрана вместо 30 станет 60 FPS, но следует помнить, что оптимизацию сцены ни кто не отменял, будет 60, если загрузка графического процессора дает возможность это сделать.

среда, 22 мая 2024 г.

Изображение для сенсорной кнопки

использовать картинку для сенсорной кнопки

Для того чтобы можно было использовать картинку для сенсорной кнопки. Нужно выбрать  изображение и в Инспекторе у поля Texture Type выставть значение: Sprite (2D and UI).

четверг, 4 апреля 2024 г.

Установка шрифта с кириллицей

Настройки TextMeshPro для установки шрифта с кириллицей

Просто, обычным перетягиванием, поставить понравившийся шрифт с кириллицей в нельзя. Обязательно во время установки нужно в поле Character Sequence прописать код: 0400-04ff 
Если же нужно использовать кириллицу вместе с латиницей, то нужен код: 0000-04ff , иначе работать не будет.

суббота, 2 марта 2024 г.

Отображение тени объекта

Включение отбрасывание тени объектом

Для того чтобы задать будет ли предмет отбрасывать тень или нет, нужно в инспекторе у Cast Shadows выставить соответствующее значение.

понедельник, 5 февраля 2024 г.

Скрытие сенсорного управления


Появилась идея, если клавиши управления назначены и стики задействованы, скрыть сенсорное управление при запуске игры в браузере настольного компьютера и с соответствующей активацией при запуске на мобильном телефоне.

Метод  проверки, является ли устройство портативным:

if (SystemInfo.deviceType == DeviceType.Handheld))
            {
              
            }

Не рабочий. При помощи тестового скрипта выяснилось, что Unity WebGL в мобильном браузере определяется, как будто он запущен в обычном браузере, а не в мобильном. Пришлось искать ему замену, с этой задачей справилась метод проверки запущено ли приложение на мобильном платформе :

if (Application.platform == RuntimePlatform.WebGLPlayer && Application.isMobilePlatform)
          {

          }

понедельник, 22 января 2024 г.

Разворот тестуры в Unity

Разворот тестуры по горизонтали в Unity

Когда-то я искал ответ на это вопрос, только для 3D Max, когда начинал его изучать. Не думал, что столкнусь с этим в Unity. Поискав информацию в интернете, столкнулся с тем, что все, как один, взять тот же сервис "Ответы Mail.ru" предлагают разворачивать саму текстуру в Photoshop'е. Хотя задача решается очень просто, путем смены знака с плюса на минус в Инспекторе у значения Tiling.