• Unity3D 调用相机


    最近开发项目,其中有一个需求是要调用安卓相机实现扫描功能。完了,懵逼了,没搞过,那就问度娘呗。百度出来的答案,基本上都是使用 AndroidStudio 开发一个 jar 包,然后放到 Unity3D 里面使用。这种 方法实现肯定没问题,但是我觉得很不友好,Unity3D 开发人员,平常使用的都是 C# 语言,用 Java 去开发,总少不了踩一堆坑,如果是大佬,那另说。而且有的时候,网上的教程不一定符合自己的需求,改起来也困难重重。

    还好 Unity3D 给我们提供了接口,这可省了不少麻烦。而且不仅可以调用手机的相机,电脑的相机也可以调用。逻辑很简单,注释我也写的很详细,下面就直接上代码了:

     1 using UnityEngine;
     2 using UnityEngine.UI;
     3 
     4 public class Test : MonoBehaviour 
     5 {
     6     #region --变量定义
     7     [SerializeField] private Vector2 webCamSize = new Vector2(1920, 1080);
     8     [SerializeField] private int webCamFPS = 20;
     9     [SerializeField] private RawImage targetImage;
    10     private WebCamTexture webCamTexture;
    11     #endregion
    12 
    13     #region --系统函数
    14     private void Start()
    15     {
    16         StartCamera();
    17     }
    18     #endregion
    19 
    20     #region --自定义函数
    21     /// <summary>
    22     /// 启用相机
    23     /// </summary>
    24     public void StartCamera()
    25     {
    26         //发起使用相机设备权限的请求
    27         Application.RequestUserAuthorization(UserAuthorization.WebCam);
    28         //如果请求授权成功。
    29         if (Application.HasUserAuthorization(UserAuthorization.WebCam))
    30         {
    31             //获取相机设备。有的设备有多个相机,所以这里返回的是个数组。
    32             WebCamDevice[] devices = WebCamTexture.devices;
    33             //生成一张相机实时渲染的纹理图。
    34             webCamTexture = new WebCamTexture(devices[0].name, (int)webCamSize.x, (int)webCamSize.y, webCamFPS);
    35             //将相机画面渲染的UI的RawImage上。
    36             targetImage.texture = webCamTexture;
    37             //开始渲染。
    38             webCamTexture.Play();
    39         }
    40     }
    41     #endregion
    42 }

    就这么几句话就能调用相机,比上面说的打包 jar 包去调用相机简直不知道简单多少倍。

    如果是开发手机端的朋友,肯定会发现,上面这段代码调用相机后,相机的画面显示会有点问题,画面旋转了90度,其实只需要将我们显示用的 RawImage 旋转90度即可。

  • 相关阅读:
    面试题:最小的K个数
    面试题:反转链表
    面试题:二进制中1的个数
    数据结构之二叉树
    Serializable-源码分析
    归并、希尔、快速排序
    栈与队列
    简单排序(冒泡、选择、插入)
    Shiro 框架认证和授权
    mybatis select查询使用返回结果为resultMap
  • 原文地址:https://www.cnblogs.com/xiaoyulong/p/11085691.html
Copyright © 2020-2023  润新知