先说实现的效果
改变相机照片画面中指定像素的透明度,实现键控效果
根据正文节奏,在5分钟内实现效果(前提:电脑上有摄像头)
1 .戴上装置的照相机这样戴
using System.Collections; using system.collections.generic; 用户单元引擎; using UnityEngine.UI; public class mt _ camera : mono behaviour { publicgameobjectraw _ image; //此raw_Image RawImage cam_Video; //Toggle tog_togCamera; 网络摄像头纹理纹理; public int w_cam=640; 公共int h _ cam=480; 私有void awake ()//ui root=game object.find (canvas _ ui ).transform; //camroot=game object.find (canvas _ web cam ).transform; } private void OnEnable ()//cam _ video=raw _ image.getcomponentrawimage ); //changecam(false ); } private void Start () cam _ video=raw _ image.getcomponentrawimage ); 更改摄像头(false; //tog _ tog camera=ui root.find (tog _ change cam ).GetComponentToggle ); //transform.getcomponentcanvasscaler (.reference resolution=new vector2(screen.width,Screen.height ) ); //tog _ tog camera.onvaluechanged.addlistener (change cam; //tog_togCamera.isOn=true; //显示相机数据以适应屏幕分辨率//不改变宽度,缩放高度以自适应显示相机数据//cam _ video.rect transform.size delta=new vector2(h _ cam * sstand ) //宽度不变,变焦宽度为相机数据//cam _ video.rect transform.size delta=new vector2(screen.height,w _ cam * screen.widen ) } ienumeratorcallcamera (boolison ) yieldreturnapplication.requestuserauthorization (user authorization.web cam ); if (应用程序. hasuserauthorization (用户授权. web cam ) ) if ) camtexture!=null(camtexture.stop ); web cam设备[ ] camera devices=web cam texture.devices; 字符串设备名称=' '; for(intI=0; i cameraDevices.Length; I )//前置摄像机if (web cam texture.devices [ I ].isfrontfacingison ) device name=web cam texture.devices [ I ].name; turncam(Ison ); 布雷克; //后置摄像头else if (那么)! web cam texture.devices [ I ].isfrontfacingamp
; !isOn) { deviceName = WebCamTexture.devices[i].name; TurnCam(isOn); break; } } camTexture = new WebCamTexture(deviceName, w_cam, h_cam, 12); cam_Video.texture = camTexture; print("**********"+cam_Video.texture.width+ "**********" + cam_Video.texture.height); camTexture.Play(); } } /// <summary> /// 翻转plane,正确显示摄像头数据 /// </summary> /// <param name="isOn">If set to <c>true</c> is turn.</param> public void TurnCam(bool isOn) {#if UNITY_IOS || UNITY_IPHONE if (!isOn) cam_Video.rectTransform.localEulerAngles = new Vector3(180, 0, 90); else cam_Video.rectTransform.localEulerAngles = new Vector3(0, 0, -90);#elif UNITY_ANDROID if (!isOn) cam_Video.rectTransform.localEulerAngles = new Vector3(180, 180, 90); else cam_Video.rectTransform.localEulerAngles = new Vector3(0, 180, 90);#endif }} 2.在场景中创建raw_Image把这个raw_Image拖放到上一个脚本组件上
3.把使用了下方shader的材质球放进raw_image中的这个位置
下面是一个shader
这个shader就是扣图的核心
总结:1.打开设备相机
2.创建raw_Image用于显示设备相机看到的画面
3.把shader用在raw_Image上
运行程序吧
问题:怎么设置将要被剔除的颜色
答:调节材质球上的Alpha Color Key
感谢爱撒娇的万宝路分享的资料
打开相机参考地址:https://blog.csdn.net/qq_16929759/article/details/80355510
抠图参考地址:https://blog.csdn.net/e295166319/article/details/80509979