版本: Unity 6 (6000.0)
语言English
  • C#

WebCamTexture

UnityEngine 中的类

/

继承自:Texture

/

实现于:UnityEngine.AudioModule

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

WebCam 纹理是渲染实时视频输入的纹理。

在 Android、iOS 和 WebGL 平台上,WebCamTexture 需要相机权限。在 Android 上,您可以使用 Permission API 在运行时请求它。有关更多信息,请参阅 请求运行时权限 文档。

在 iOS 和 WebGL 上,您可以使用 Application.RequestUserAuthorization 在运行时请求相机权限。

注意:在 Android 和 iOS 平台上,Unity 不支持同时使用多个 WebCamTexture。

以下代码示例演示了如何在 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如果纹理基于深度数据,则此属性为 true。
isPlaying返回相机当前是否正在播放。
requestedFPS设置相机设备的请求帧率(以帧/秒为单位)。
requestedHeight设置相机设备的请求高度。
requestedWidth设置相机设备的请求宽度。
videoRotationAngle返回一个顺时针角度(以度为单位),可用于旋转多边形,以便相机内容以正确的方向显示。
videoVerticallyMirrored返回纹理图像是否垂直翻转。

构造函数

WebCamTexture创建一个 WebCamTexture。

公共方法

GetPixel获取坐标 (x, y) 处的像素颜色。
GetPixels获取某个mipmap级别的像素颜色数据作为 Color 结构体。
GetPixels32获取某个mipmap级别的像素颜色数据作为 Color32 结构体。
Pause暂停相机。
Play启动相机。
Stop停止相机。

继承的成员

静态属性

allowThreadedTextureCreation允许 Unity 内部在任何线程(而不是专用的渲染线程)上执行纹理创建。
currentTextureMemory场景中所有纹理使用的内存量。
desiredTextureMemory如果没有任何其他约束,Unity 加载的纹理的总大小(以字节为单位)。在 Unity 加载任何纹理之前,它会应用内存预算,如果纹理大小超过其值,则会降低加载的纹理分辨率。desiredTextureMemory 值考虑了 Unity 请求或手动设置的 mipmap 级别。例如,如果 Unity 未以全分辨率加载纹理,因为纹理距离较远或其请求的 mipmap 级别大于 0,则 Unity 会减少 desiredTextureMemory 值以匹配所需的总内存。desiredTextureMemory 值可能大于 Texture.targetTextureMemory 值。
GenerateAllMips可与采用 mip 计数的纹理构造函数一起使用,以指示应生成所有 mip。此字段的值为 -1。
nonStreamingTextureCount场景中非流式纹理的数量。这包括 Texture2D 和 CubeMap 纹理的实例。这并不包括任何其他纹理类型,也不包括 Unity 在内部创建的 2D 和 CubeMap 纹理。
nonStreamingTextureMemoryUnity 为场景中的非流式纹理分配的内存量。这仅包括 Texture2D 和 CubeMap 纹理的实例。这并不包括任何其他纹理类型,也不包括 Unity 在内部创建的 2D 和 CubeMap 纹理。
streamingMipmapUploadCount由于纹理 mipmap 流式传输而上传纹理的次数。
streamingRendererCount向纹理流式传输系统注册的渲染器数量。
streamingTextureCount流式纹理的数量。
streamingTextureDiscardUnusedMips此属性强制流式纹理系统丢弃所有未使用的 mipmap,而不是在纹理内存预算超过之前将其缓存。当您分析或编写测试以在内存中保留一组可预测的纹理时,这很有用。
streamingTextureForceLoadAll强制流式纹理加载所有 mipmap 级别。
streamingTextureLoadingCount当前正在加载 mipmap 的流式纹理的数量。
streamingTexturePendingLoadCount待加载的流式纹理的 mipmap 数量。
targetTextureMemoryUnity 在应用内存预算并完成纹理加载后,为场景中的纹理分配的纹理内存总量。`targetTextureMemory` 也考虑了 mipmap 流式传输设置。此值仅包括 Texture2D 和 CubeMap 纹理的实例。此值不包括任何其他纹理类型,也不包括 Unity 在内部创建的 2D 和 CubeMap 纹理。
totalTextureMemory如果 Unity 以 mipmap 级别 0 加载所有纹理,则 Unity 将使用的纹理内存总量。这是一个理论值,不考虑流式传输系统或任何其他输入,例如当您手动设置`Texture2D.requestedMipmapLevel`时。要查看考虑输入的纹理内存值,请使用`desiredTextureMemory`。`totalTextureMemory` 仅包括 Texture2D 和 CubeMap 纹理的实例。此值不包括任何其他纹理类型,也不包括 Unity 在内部创建的 2D 和 CubeMap 纹理。

属性

hideFlags对象是否应隐藏、与场景一起保存或用户可修改?
name对象的名称。
anisoLevel定义纹理的各向异性过滤级别。
dimension纹理的维度(类型)(只读)。
filterMode纹理的过滤模式。
graphicsFormat返回纹理对象的 GraphicsFormat 格式或颜色格式。
graphicsTexture表示上传到图形设备的纹理资源的 GraphicsTexture(只读)。
height纹理的高度(以像素为单位)(只读)。
imageContentsHash纹理的哈希值。
isDataSRGB如果纹理像素数据位于 sRGB 颜色空间中,则返回 true(只读)。
isReadableUnity 是否在 CPU 可寻址内存中存储此纹理的像素数据的额外副本。
mipMapBias纹理的 mipmap 偏差。
mipmapCount此纹理中包含多少个 mipmap 级别(只读)。
updateCount更新纹理时,此计数器会递增。
width纹理的宽度(以像素为单位)(只读)。
wrapMode纹理坐标环绕模式。
wrapModeU纹理 U 坐标环绕模式。
wrapModeV纹理 V 坐标环绕模式。
wrapModeWTexture3D 的纹理 W 坐标环绕模式。

公共方法

GetInstanceID获取对象的实例 ID。
ToString返回对象的名称。
GetNativeTexturePtr检索到纹理资源的本机(底层图形 API)指针。
IncrementUpdateCount递增更新计数器。

静态方法

Destroy删除 GameObject、组件或资源。
DestroyImmediate立即销毁对象 obj。强烈建议您使用 Destroy 代替。
DontDestroyOnLoad加载新场景时不要销毁目标对象。
FindAnyObjectByType检索类型为 type 的任何活动加载对象。
FindFirstObjectByType检索类型为 type 的第一个活动加载对象。
FindObjectsByType检索类型为 type 的所有加载对象的列表。
Instantiate克隆对象 original 并返回克隆。
InstantiateAsync捕获原始对象(必须与某些 GameObject 相关)的快照并返回 AsyncInstantiateOperation。
SetGlobalAnisotropicFilteringLimits设置各向异性限制。
SetStreamingTextureMaterialDebugProperties此函数在 mipmap 流式传输系统已知的全部材质上设置 mipmap 流式传输调试属性。

运算符

bool对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用以查看它们是否引用同一个对象。