我们在assetstore (https://www.assetstore.unity3d.com/en/#!/content/56673) 上使用名为Camera Capture Kit 的插件制作了一个项目,该插件采用WebCamTexture 并与之配合使用。有 sn-ps 的代码可用于您想要的。
您不能直接更改纹理,但可以使用带有第二个纹理的着色器创建材质。
Shader "Unlit/SpriteWebCamTexture"
{
Properties
{
_Color ("Main Color", Color) = (1,1,1,1)
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
_BlendTex ("Blend (RGB)", 2D) = "white"
}
SubShader {
Tags {"Queue"="Transparent"}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Pass {
SetTexture[_BlendTex] {
ConstantColor[_Color]
Combine texture * constant, constant
}
}
}
Fallback "Transparent/VertexLit"
}
在您的脚本中,您将 _BlendTex 属性设置为 webCamTexture,如下所示。
spriteMaterial.SetTexture("_BlendTex", cameraCaptureKitController.GetWebCamTexture() );
这可以在 Update 方法中完成以确保其设置。
Sprite 渲染器的材质设置在这样的 Awake 函数中。
cameraPreviewSpriteRenderer.material = webCamMat;
webCamMat.EnableKeyword( "_BlendTex" );
现在,为了让 sprite 渲染器渲染任何东西,你还必须确保它有一个 Sprite 来定义它的 size ,所以可以做的是创建一个具有你想要的尺寸的空白纹理渲染,中提琴,你现在有一个 SpriteRenderer 显示你的 WebCamTexture 提要。
干杯