Unity

Установка
 Установить Unity Hub
 Переназначить папку хранения Unity x.x.x в  Unity Hub
 Найти в архиве Unity 2019.3.12
 Автоматическая установка IDE Microsoft Visual Studio x Community


Создание Приложения для платформ
1. PC
2. Android

urls{
http://unity3d.ru/distribution/viewtopic.phpf=5&t=51331
https://forum.unity.com/threads/application-runinbackground-is-not-working-on-android.117723/#post-2744101
}
Основное приложение настроить как 'Фоновым" (сделать видимым или продолжать выполнять вне самого приложения){
Background
https://www.simplifiedcoding.net/android-service-example/ <br>
https://mvnrepository.com/artifact/androidx.annotation/annotation <br>
https://wiki.appodeal.com/ru/unity/vklyuchenie-multidex-dlya-proekta-unity <br>
https://habr.com/ru/post/487336/
}

public static void Close(){
Activity act=UnityPlayer.currentActivity;
act.finish();
act.overridePendingTransition(0, 0);
Intent i=act.getIntent();
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
act.startActivity(i);
act.overridePendingTransition(0, 0);
}

https://stackoverflow.com/questions/55779470/unity-send-and-receive-microphone-audio-over-network <br>

Microsoft Studio\Средства\Диспетчер пакетов NuGet\Консоль диспетчера пакетов{
Install-Package WebRTC
Install-Package NAudio -Version 1.10.0
}
https://archive.codeplex.com/?p=naudio
https://metanit.com/sharp/articles/7.php <br>


http://denis-potapenko.blogspot.com/2013/04/task-6-loading-mp3-audio-via-www-class.html  <br>

NAudio.dll для Windows (поиск для android)
Транслируем звук по сети с помощью Java
по сети через протокол UDP передавать поток аудиофайла (mp3, ogg, wav)
Android работает в системе Linux - DLL файлы обычно являются байт-кодом, скомпилированным для Windows.
библиотека javax.sound.sampled генерирует звуковые волны от jdk 9
воспроизвести байты в звук из буфера unity3d
Assets в Unity через интернет{Agora Voice SDK for Unity
}
https://habr.com/ru/post/242949/
https://github.com/tabatsky/NetworkingAudio

Байты Звука сохранить в ogg и воспроизвести{byte[] bytes = ...
string name = Path.ChangeExtension(Path.GetRandomFileName(), ".wav");
string path = Path.Combine(Path.GetTempPath(), name);
File.WriteAllBytes(path, bytes);
}
Заменить WaveOut для прослушивания{
https://answers.unity.com/questions/737002/wav-byte-to-audioclip.html
ссылка
}
РЕШЕНИЕ{
загрузка  асссета OpenWavParser
МИКРОФОН{
объявить компоненты{
MicController mic;
mic = gameObject.GetComponent<MicController>();
}
управление{
mic.IsWorking
mic.WorkStop();
mic.WorkStart();
}
}
ПЛЕЕР{
объявить компоненты{
AudioSource source;
source = gameObject.GetComponent<AudioSource>();
}
байты аудио воспроизвести{
byte[] wavFile = File.ReadAllBytes(filePath);
source.clip = OpenWavParser.ByteArrayToAudioClip(wavFile);
}
управление плеером{
source.Play();
source.Pause();
source.Stop();
}
}
ФАЙЛ{
существует ли файл{
File.Exists(inputFile.text);
byte[] wavFile = File.ReadAllBytes(inputFile.text);
source.clip = OpenWavParser.ByteArrayToAudioClip(wavFile);
}
аудио байты сохранить в файл{File.WriteAllBytes(Application.persistentDataPath + "/MyFile.wav", wavFile);}
удалить файл{File.Delete(Application.persistentDataPath + "/MyFile.wav");}
}
}

https://androidp1.ru/dekompilyatsiya-apk-prilozheniya-android/ <br>
https://fpscreatorworld.ucoz.ru/forum/186-7392-1 <br>
https://blog.iangclifton.com/2010/10/08/using-meta-data-in-an-androidmanifest/<br><br>
использование jdk (комплект разработчика Java)
использование apktool (декомпиляция,компиляция)
использование sign (подписать модифицированное приложение)
модификация AndroidManifest.xml (изменение value у meta-data)
получить value у meta-data в Unity (plagin на java)

https://github.com/kshoji/Unity-Android-Sensor-Plugin/blob/develop/library/src/main/java/jp/kshoji/unity/sensor/UnitySensorPlugin.java
http://www.ohandroid.com/android-40-x.html
http://android-er.blogspot.com/2012/08/access-temperature-sensor.html
<br>
public static String GetTempe(){
Activity crntActivity=UnityPlayer.currentActivity;
Intent batteryStatus = crntActivity.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
float t=batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1)/10.0f;
return t+"";
}

Подкатегории

  1. класс создаётся в виде скрипта
  2. все классы хранятся в файле формата cs от С#
  3. имя класса соотвествует имени файла, в котором находится сам класс
  4. по умолчанию пустой класс C#  наследует класс MonoBehaviour от Unity
  5. класс может иметь свои или наследуемые методы
  6. класс может объявляться с присваиванием значений по умолчанию для полей
  7. класс может привязывается к игровому объекту сцены unity если наследует класс MonoBehaviour 

Без вызова Экземпляра
 Класс
  статическая get,set статического класса
  статическая функция статического класса
  статическая метод-функция класса
Класс предка MonoBehaviour
  статическая get,set класса предка MonoBehaviour
  статическая метод-функция класса предка MonoBehaviour

Вызвать Экземпляр
 Класс
  get,set класса
  метод-функция класса
 Класс предка MonoBehaviour
  get,set  класса предка MonoBehaviour
  метод-функция  класса предка MonoBehaviour

Функция
 объявление локальной переменной внутри функции неявно или типизированным способом
Класс
 объявление поля только типизированным способом

ключевые слова в C#

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

Модуль - сборка 

  1. настройка среды разработки для С# или JavaScript для скрипта
    Edit\Preferences..\External Tools\External Script Editor="Visual Studio 2017 (Comminity)"
  2. редактор сцены или уровня
    File\Open Scene... -> Assets\Scenes\SampleScene.unity
  3. настройка свойств объекта в инспекторе
  4. управление объектами в виде иерархического дерева
  1. создание проекта
    UnityHub\Projects\Add\{Version}{3D}{ProjectName}{Location}\Create->открывается Редактор
  2. сохранение проекта
    в Редакторе -> File\Save Project
  3. открыть проект
    UnityHub\Projects\->выбрать проект
  • открыть Проект
  • первая созданная сцена Unity
    File\Open Scene... -> Assets\Scenes\SampleScene.unity
  • создать новую сцену
    File\New Scene... -> Assets\Scenes\...\New.unity
  • сохранить текущую сцену
    File\Save
    File\Save As... -> Assets\Scenes\...\New.unity
  • GameObject
  • Базовый класс для всех объектов на сценах Unity
    создание пустого игрового объекта на сцене Unity
    открыть Сцену->Tab Hierarchy -> RBM (Right Button Mouse)-> Create Empty

Инспектор

Компоненты

  • гайки и болты Игровых Объектов и поведения в игре
  • Они являются функциональными частями каждого Игрового Объекта
    Фундаментальный объект в сценах Unity, который может представлять персонажей, реквизиты, пейзажи, камеры, путевые точки и многое другое
  1. открыть проект
  2. настройка среды разработки для С# или JavaScript в Редакторе для скриптов
    Edit\Preferences..\External Tools\External Script Editor="Visual Studio 2017 (Comminity)"
  3. создание пустого скрипта С#
    в Редакторе Tab Project->директория->RBM (Right Button Mouse)->create\C# Script ->Имя.cs (имя соотвествует имени класса в самом файле)

Все основные элементы языка C# для создания скриптов на Unity

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

Каналы youtube

{

TheGameDev

{

Shader Forge часть 1

{

тесселяция dx11

}

Shader Forge часть 2

{

Custom Lighting

{

закручивание

ломка текстуры при помощи каналов цвета

плавная периодичность ломки текстуры

накладывание двух текстур

встроенная анимация

}

Lit (Basic)

{

тесселяция

}

Post Effect для камеры

{

тип шейдера

красивая загрузка

Game over

}

Shader Forge часть 3

{

ZWrite

глубина отрисовки объекта за стеной

}

}

}