WebCamTexture
Описание
WebCam Текстуры — это текстуры, на которые рендируется видео в реальном времени.
Он Android, iOS, и WebGL платформы, WebCamTexture требует разрешения камеры. Android, вы можете запросить его во время выполнения с помощью Permission API. Более подробную информацию см. Запрос разрешений времени выполнения документация.
Он iOS и WebGL, Вы можете запросить разрешение камеры во время выполнения с помощью Application.RequestUserAuthorization.
Примечание: Включено Android и iOS платформы, Unity не поддерживает множественные WebCamTextures одновременно.
Следующий пример кода показывает, как запросить у пользователя разрешение на использование камеры на iOS, Android, и WebGL платформы.
using UnityEngine; using System; using System.Collections; using UnityEngine; #if UNITY_ANDROID using UnityEngine.Android; #endif
public class WebCam : MonoBehaviour { #if UNITY_IOS || UNITY_WEBGL private bool CheckPermissionAndRaiseCallbackIfGranted(UserAuthorization authenticationType, Action authenticationGrantedAction) { if (Application.HasUserAuthorization(authenticationType)) { if (authenticationGrantedAction != null) authenticationGrantedAction();
return true; } return false; }
private IEnumerator AskForPermissionIfRequired(UserAuthorization authenticationType, Action authenticationGrantedAction) { if (!CheckPermissionAndRaiseCallbackIfGranted(authenticationType, authenticationGrantedAction)) { yield return Application.RequestUserAuthorization(authenticationType); if (!CheckPermissionAndRaiseCallbackIfGranted(authenticationType, authenticationGrantedAction)) Debug.LogWarning($"Permission {authenticationType} Denied"); } } #elif UNITY_ANDROID private void PermissionCallbacksPermissionGranted(string permissionName) { StartCoroutine(DelayedCameraInitialization()); }
private IEnumerator DelayedCameraInitialization() { yield return null; InitializeCamera(); }
private void PermissionCallbacksPermissionDenied(string permissionName) { Debug.LogWarning($"Permission {permissionName} Denied"); }
private void AskCameraPermission() { var callbacks = new PermissionCallbacks(); callbacks.PermissionDenied += PermissionCallbacksPermissionDenied; callbacks.PermissionGranted += PermissionCallbacksPermissionGranted; Permission.RequestUserPermission(Permission.Camera, callbacks); } #endif
void Start() { #if UNITY_IOS || UNITY_WEBGL StartCoroutine(AskForPermissionIfRequired(UserAuthorization.WebCam, () => { InitializeCamera(); })); return; #elif UNITY_ANDROID if (!Permission.HasUserAuthorizedPermission(Permission.Camera)) { AskCameraPermission(); return; } #endif InitializeCamera(); }
private void InitializeCamera() { WebCamTexture webcamTexture = new WebCamTexture(); Renderer renderer = GetComponent<Renderer>(); renderer.material.mainTexture = webcamTexture; webcamTexture.Play(); } }
Статические свойства
| Свойство | Описание |
|---|---|
| devices | Возвращает список доступных устройств. |
Свойства
| Свойство | Описание |
|---|---|
| autoFocusPoint | Это свойство позволяет установить/получить точку автофокуса камеры. Это работает только на устройствах Android и iOS. |
| deviceName | Установите этот параметр, чтобы указать имя используемого устройства. |
| didUpdateThisFrame | Обновлял ли видеобуфер этот кадр? |
| isDepth | Это свойство является истинным, если текстура основана на данных глубины. |
| isPlaying | Возвращает, если камера в настоящее время воспроизводит. |
| requestedFPS | Установите требуемую частоту кадров устройства камеры (в кадрах в секунду). |
| requestedHeight | Установите требуемую высоту камеры. |
| requestedWidth | Установите требуемую ширину камеры. |
| videoRotationAngle | Возвращает угол по часовой стрелке (в градусах), который может быть использован для поворота полигона, чтобы содержимое камеры было показано в правильной ориентации. |
| videoVerticallyMirrored | Возвращается, если изображение текстуры перевернуто вертикально. |
Конструкторы
| Конструктор | Описание |
|---|---|
| WebCamTexture | Создайте WebCamTexture. |
Открытые методы
| Метод | Описание |
|---|---|
| GetPixel | Получает цвет пикселя в координатах (x, y). |
| GetPixels | Получает данные цвета пикселей для уровня mipmap в качестве структуры Color. |
| GetPixels32 | Получает данные цвета пикселей для уровня mipmap в виде структуры Color32. |
| Pause | Приостанавливает камеру. |
| Play | Запускает камеру. |
| Stop | Останавливает камеру. |
Унаследованные члены 5
Статические свойства
| Свойство | Описание |
|---|---|
| allowThreadedTextureCreation | Разрешить Unity internals выполнять создание текстуры на любом потоке (вместо выделенного потока рендеринга). |
| currentTextureMemory | Количество памяти, которое используют все текстуры в сцене. |
| desiredTextureMemory | Общее количество памяти текстуры в байтах, которое Unity использовало бы при отсутствии ограничений. |
| GenerateAllMips | Может быть использовано с конструкторами Текстуры, которые принимают число mip для указания, что все mip должны быть созданы. Значение этого поля -1. |
| nonStreamingTextureCount | Количество текстур в сцене, которые не являются потоковыми. Это включает экземпляры текстур Texture2D и CubeMap. Это не включает другие типы текстур или текстуры 2D и CubeMap, которые Unity создает внутри сцены. |
| nonStreamingTextureMemory | Количество памяти, которое Unity выделяет для не потоковых Текстур в сцене. Это включает только экземпляры Текстур Texture2D и CubeMap. Это не включает никакие другие типы Текстур, или Тексты 2D и CubeMap, которые Unity создает внутренне. |
| streamingMipmapUploadCount | Сколько раз текстура была загружена из-за потока Texture mipmap. |
| streamingRendererCount | Число рендереров, зарегистрированных в системе потокового передачи текстур. |
| streamingTextureCount | Количество потоковых текстур. |
| streamingTextureDiscardUnusedMips | Это свойство заставляет потоковую систему Текстур отбрасывать все неиспользуемые mipmaps вместо их кэширования до тех пор, пока бюджет памяти Текстуры не будет превышен. Это полезно при профилировании или написании тестов для сохранения предсказуемого набора Текстур в памяти. |
| streamingTextureForceLoadAll | Принудительная загрузка потоковых текстур на все уровни. |
| streamingTextureLoadingCount | Число потоковых Текстур с загружаемыми в настоящее время mipmaps. |
| streamingTexturePendingLoadCount | Число потоковых текстур с выходящими mipmaps для загрузки. |
| targetTextureMemory | Общее использование памяти текстур в байтах после применения бюджета памяти и загрузки всех текстур. |
| totalTextureMemory | Общая память текстур, в байтах, которую Unity использовала бы, если бы все текстуры были загружены в полном разрешении. |
Свойства
| Свойство | Описание |
|---|---|
| hideFlags | Должен ли объект быть скрытым, сохраняться с Scene или изменяться пользователем? |
| name | Имя объекта. |
| anisoLevel | Определяет уровень анизотропной фильтрации текстуры. |
| dimension | Размерность (тип) Текстуры. |
| filterMode | Режим фильтрации текстуры. |
| graphicsFormat | Возвращает формат GraphicsFormat или цветовой формат объекта Текстура. |
| graphicsTexture | GraphicsTexture, который представляет ресурс текстуры, загруженный на графическое устройство. |
| height | Высота текстуры в пикселях. |
| imageContentsHash | Хеш текстуры. |
| isDataSRGB | Возвращает true, если данные текстуры пикселя находятся в цветовом пространстве sRGB. |
| isReadable | Сохраняет ли Unity дополнительную копию пиксельных данных текстуры в адресуемой памяти CPU. |
| mipMapBias | Отклонение текстуры от mipmap. |
| mipmapCount | Сколько уровней mipmap есть в текстуре. |
| updateCount | Этот счетчик увеличивается при обновлении Текстуры. |
| width | Ширина текстуры в пикселях. |
| wrapMode | Варианты выборки текстуры, если координата текстуры находится вне диапазона [0, 1]. |
| wrapModeU | Варианты выборки текстуры, если координата U текстуры находится вне диапазона [0, 1]. |
| wrapModeV | Варианты выборки текстуры, если координата текстуры V находится вне диапазона [0, 1]. |
| wrapModeW | Варианты выборки текстуры, если координата W находится вне диапазона [0, 1]. |
Открытые методы
| Метод | Описание |
|---|---|
| GetInstanceID | Получает экземпляр ID объекта. |
| ToString | Возвращает имя объекта. |
| GetNativeTexturePtr | Получить собственный (базовый график API) указатель на ресурс Текстура. |
| IncrementUpdateCount | Увеличение счетчика обновлений. |
Статические методы
| Метод | Описание |
|---|---|
| Destroy | Удаляет GameObject, компонент или ресурс. |
| DestroyImmediate | Немедленно уничтожает указанный объект. Используйте с осторожностью и только в режиме редактирования. |
| DontDestroyOnLoad | Не уничтожать целевой Объект при загрузке нового Scene. |
| FindAnyObjectByType | Получает любой активный загруженный объект типа Type. |
| FindFirstObjectByType | Получает первый активный загруженный объект типа Type. |
| FindObjectsByType | Получает список всех загруженных объектов типа Type. |
| Instantiate | Клонирует исходный объект и возвращает клон. |
| InstantiateAsync | Захватывает моментальный снимок первоначального объекта (который должен быть связан с каким-либо GameObject) и возвращает AsyncInstantiateOperation. |
| SetGlobalAnisotropicFilteringLimits | Задает пределы анизотропии. |
| SetStreamingTextureMaterialDebugProperties | Эта функция устанавливает свойства отладки потока mipmap для всех материалов, известных системе потока mipmap. |
Операторы
| Оператор | Описание |
|---|---|
| bool | Существует ли объект? |
| оператор!= | Сравнивает, если два объекта ссылаются на разные объекты. |
| оператор == | Сравнение двух ссылок на объекты для определения того, относятся ли они к одному и тому же объекту. |