请问unity如何unity怎么连接ios我的USB webcam??

unity3d 读取usb摄像头 - c_dragon - 博客园
随笔 - 145, 文章 - 0, 评论 - 61, 引用 - 0
using UnityE
using System.C
public class C : MonoBehaviour
private WebCamTexture cameraT
private string cameraName = "";
private bool isPlay = true;
// Use this for initialization
void Start()
cameraTexture = new WebCamTexture();
StartCoroutine(Test());
// Update is called once per frame
void Update()
IEnumerator Test()
yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
if (Application.HasUserAuthorization(UserAuthorization.WebCam))
WebCamDevice[] devices = WebCamTexture.
cameraName = devices[0].
cameraTexture = new WebCamTexture(cameraName, 400, 300, 15);
cameraTexture.Play();
isPlay = true;
void OnGUI()
if (isPlay)
GUI.DrawTexture(new Rect(0, 0, 400, 300), cameraTexture, ScaleMode.ScaleToFit);[Python] USB连接Unity Profiler - 简书
[Python] USB连接Unity Profiler
Android设备连接Profiler有两种方式,一种是直接通过IP进行连接,需要手机和电脑处于可连通的网络环境中;另一种是借助ADB命令,使用USB进行连接。我通常都是使用USB的方式,网络连通这个条件可能在大多数工作环境下都比较困难,相比之下使用USB就很方便了,还不用输一串的IP地址。不过USB方式需要执行一个连接转发的命令:
adb forward tcp:54999 localabstract:Unity-{insert bundle identifier here}
之前的很长一段时间里,我都是把这个命令放到印象笔记里,用的时候复制出来执行。因为游戏的包名通常不会变,所以这个命令基本是固定的。
  前几天翻项目共享盘的时候,发现了一个执行上面命令的bat脚本。这是一种更方便的方式,写好脚本放在桌面上,需要的时候双击即可执行。这个脚本方便是方便,却有个小缺陷,无论命令是否执行成功,都会输出连接成功……然后我强迫症就犯了……
  虽然想把问题解决掉,可我不会bat命令啊,也不想去学……然后就用Python重写了一个自己用的~
import subprocess
# ADB命令所在路径,例:r'D:\android-sdk-windows\platform-tools\adb.exe'
ADB_Path = None
# 游戏包名(package),例:'com.walsite.game'
App_Package = None
def is_adb_valid():
判断ADB命令是否已经添加到环境变量
:rtype: bool
proc = subprocess.run('adb help', shell=True, stderr=subprocess.PIPE)
return proc.returncode == 0
def forward_adb_cmd(adb: str, package: str):
执行连接Profiler的命令
:param adb: adb命令所在的路径
:param package: 游戏包名
:return: 返回命令执行是否成功
:rtype: bool
cmd = adb + ' forward tcp:54999 localabstract:Unity-' + package
return os.system(cmd) == 0
def main():
package = App_Package
if package is None or '' == package:
package = input('请输入游戏的包名(package):')
adb = ADB_Path
if adb is None or '' == adb:
if is_adb_valid():
adb = 'adb'
adb = input('请输入adb完整路径:')
if forward_adb_cmd(adb, package):
print('执行成功~')
print('\n')
print('* ' * 20)
print('操作失败!!')
print('* ' * 20, '\n')
os.system('pause')
if __name__ == '__main__':
代码逻辑很简单,这里简单介绍下用来执行cmd命令的两个标准库函数。
1) os.system(command: str)
# 执行cmd命令,它会返回执行结果的状态码。
# 命令产生的输出,会直接显示到命令行中,不会通过返回值返回。
# command:要执行的命令
2) subprocess.run(args, shell: bool, stderr)
# 这个函数的功能比较丰富,参数也很多,这里只摘取了用到的部分,功能说明也不代表其全部。
# 通过它判断命令是否执行成功,并且不让命令输出显示出来。
# args: 要执行的命令,这里使用拼接好的str。
# shell: 标记为是否是shell模式。
# stderr:设定标准错误输出的位置,这里为了不让命令的产生的输出显示到命令行上,
#     将标准输出指向了PIPE。
is_adb_valid这个函数也值得说一下。通常我们检查环境变量是否配置正确,都会在cmd里直接执行一个命令,如果输出和这个命令相关的内容,就代表配置成功。比如配置ADB的时候,会直接执行&code&adb&/code&,然后命令行会输出ADB命令的帮助文档。这一现象看似是命令执行成功了,实际却是失败了。我想这应该是ADB命令的一种处理错误的方式把,接收到错误的命令时会输出help信息,帮助使用者纠正错误。
  由于在Python里执行cmd命令只能获得错误码,所以做验证时必须使用一个能返回“执行成功”错误码(0)的命令,也就是这里选择的&code&adb help&/code&。它不需要多余变量参数与条件,只要ADB在环境变量中配置正确,它就会返回“执行成功”。
昨天加班用这个命令的时候输出了一个错误消息:&code&error: more than one device/emulator&/code&
  它的意思大概是“当前连接了多个设备,不知道该选择哪一个”,但是我只连了一个测试机。这个问题出现频率还挺高的,我就遇到过好多次,不过原因一直没找到。使用&code&adb kill-server&/code&断开所有连接可以解决问题。我调整了下脚本,把这个问题加进去了,完整代码可参考。
  修改的两个关键点:
1)使用&code&subprocess.run&/code&执行命令,通过返回的CompletedProcess.stderr获得错误消息
2)调用run时设置参数&code&universal_newlines=True&/code&保证stderr是文本形式(不指定这个参数的话,如果发生了异常,stderr返回的是bytes信息,无法定位问题)
ADB,即Android debug bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 From:GitHub - mzlogin/awesome-adb: ADB Usage Complete / ADB 用法...
作者:mzloginGithub: https://github.com/mzlogin/awesome-adb Awesome Adb ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备...
原文链接:https://github.com/mzlogin/awesome-adb 基本用法命令语法为命令指定目标设备启动/停止查看 adb 版本以 root 权限运行 adbd指定 adb server 的网络端口 设备连接管理查询已连接设备/模拟器USB 连接无线连...
转自: https://github.com/mzlogin/awesome-adb [图片上传失败...(image-6a5cfb-0)] ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
又是一时疏忽,将煮好的滚咖啡倒入伴侣粉末。伴侣很快凝结成块。我苦笑,纯硫酸倒入纯水和反之的结果相差甚远,你化学这么好,为何还是健忘。搅拌良久,结块渐渐化开。 一转眼已是年中。 久病成医,心疾为何不能靠经验好转。已经太久,忘记了清脆敲击键盘或者是执笔写下想法的感觉。所谓「退一...
“冬天的太阳很温暖,我们想要做冬天的太阳,为患者提供温暖,所以我们将产品命名为冬日中医,将公司命名为冬日暖阳。 冬日中医CEO兼创始人李祖赟告诉铁杆中医,冬日中医是由厦门冬日暖阳网络科技有限公司推出的一款以互联网为基础的中医问诊及中药配送APP。而李祖赟也坚信,中医比西医更...
简介 指多维空间两点间的距离,当为二维平面的时候我们可以很好的进行想象,两个点的距离计算就是,横坐标相减的平方加上纵坐标相减的平方然后开方,多维的话,以此类推。 实战,例子选自集体智慧编程。
你是庐州漂泊归来的书生, 半世的流离使你厌倦. 于是懂了浮名只是虚妄, 不如在故里纷飞的柳絮中低吟浅唱, 在草长莺飞的三月, 欣赏一路烟霞的明媚春光. 只是如今灯下闲读, 窗透青光, 是否还有发丝披肩的佳人红袖添香? 香怎奈何烟花易冷人事难料. 桥边的红药年年寂寞绽放重重花...
Prometheus Querying 查询 prometheus提供了功能性表达式语言,可让用户对于时间序列的数据进行选择和聚合。通过表达式查询的结果可以绘制为曲线图,也可以在prometheus提供的表达式浏览器中显示为表格,也可以通过外部系统以HTTP API来调用使...谁知道Unity3D如何外接其他游戏设备,比如RS232接口的传感?_百度知道
谁知道Unity3D如何外接其他游戏设备,比如RS232接口的传感?
谁知道Unity3D如何外接其他游戏设备,比如RS232接口的传感?能不能接10个以上的外设,传感器回传的数据该怎么在游戏中识别出来呢?
我有更好的答案
力回馈都行USB OK。小意思啦。。JOYSTICK1~JOYSTICK11弄不了找俺。=================RS232接口.在游戏设备都逃汰十几年了。。用那干啥。。
RS232接口。。?好骨灰级的东东啊
为您推荐:
其他类似问题
rs232接口的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)4237人阅读
Unity Camera WebWebCamTexture
最近搞unity外部摄像头调用,参考了下网上的说法,发现有的已经是很早的写法了,这里自己尝试改了点,以作参考。
难点:获取摄像头
1,WebCamTexture个人认为是Unity封装好的摄像头传过来的图像信息;
2,将WebCamTexture的对象赋值给一个Texture(载体,即游戏物体,可以是GUITexture、Render.Material.Texture、RawImage.Texture等)
3,上面说到的载体Texture调用Play(),Pause(),Stop()即可完成简单的播放,暂停,停止。
4,WebCamTexture.devices属性代表当前的所有设备的引用,实例化WebCamTexture时根据devices中的名字即可代表是哪个摄像头。
下面是用RawImage显示的例子,用到的按钮等要自己创建。
以上是个人理解,如有错误欢迎指正!!!!
using UnityE
using System.C
using UnityEngine.UI;
public class WebCamera : MonoBehaviour {
//组件引用
private RawImage go_rawImageT
public Button[]
public Text debugT
public Image photoI
private WebCamTexture _webcamTexF
private WebCamTexture _webcamTexB
WebCamTexture webcamT
//前后摄像头
public int m_devID = 0;
public float aspect = 9f / 16f;
private string m_deviceN
public string m_photoN
public string m_photoP
void Start()
Debug.Log(Application.persistentDataPath);
go_rawImageTexture = transform.Find(&RawImage&).GetComponent&RawImage&();
button[0].onClick.AddListener(Play);
button[1].onClick.AddListener(Stop);
button[2].onClick.AddListener(cameraSwitch);
button[3].onClick.AddListener(TakePhoto);
//webcamTexture = new WebCamTexture();
////如果有后置摄像头,调用后置摄像头
//for (int i = 0; i & WebCamTexture.devices.L i++)
// if (!WebCamTexture.devices[i].isFrontFacing)
// webcamTexture.deviceName = WebCamTexture.devices[i].
// go_rawImageTexture.texture = webcamT
//webcamTexture.Play();
//WebCamDevice[] devices = WebCamTexture.
//for( var i = 0 ; i & devices.L i++ ){
// Debug.Log(devices[i].name);
public delegate void onComplete(Sprite sprite);
public WebCamTexture webCamera
m_deviceName = WebCamTexture.devices[m_devID].
if (m_devID == 0)
if (_webcamTexBack == null)
// Checks how many and which cameras are available on the device
foreach (WebCamDevice device in WebCamTexture.devices)
if (!device.isFrontFacing)
m_deviceName = device.
_webcamTexBack = new WebCamTexture(m_deviceName, Screen.width, (int)(Screen.width * aspect));
return _webcamTexB
if (_webcamTexFront == null)
// Checks how many and which cameras are available on the device
foreach (WebCamDevice device in WebCamTexture.devices)
if (device.isFrontFacing)
m_deviceName = device.
_webcamTexFront = new WebCamTexture(m_deviceName, Screen.width, (int)(Screen.width * aspect));
return _webcamTexF
void Play()
go_rawImageTexture.texture = webC
webCamera.Play();
//webcamTexture.Play();
void Stop()
webCamera.Stop();
//webcamTexture.Stop();
public void cameraSwitch()
// Checks how many and which cameras are available on the device
foreach (WebCamDevice device in WebCamTexture.devices)
if (m_deviceName != device.name)
webCamera.Stop();
m_devID++;
if (m_devID &= WebCamTexture.devices.Length) m_devID = 0;
webCamera.deviceName = device.
Debug.Log(&m_devID& + m_devID);
Debug.Log(&m_deviceName& + device.name);
debugText.text=&ID:&+m_devID+&Name:&+device.
webCamera.Play();
void TakePhoto()
takePicture((delegate (Sprite sp)
photoImg.sprite =
public void takePicture(onComplete callback)
StartCoroutine(GetTexture(callback));
//捕获照片
//获取截图
public IEnumerator GetTexture(onComplete callback)
webCamera.Pause();
yield return new WaitForEndOfFrame();
Texture2D t = new Texture2D(Screen.width, (int)(Screen.width * aspect));
t.ReadPixels(new Rect(0, 0, Screen.width, (int)(Screen.width * aspect)), 0, 0, false);
t.Apply();
byte[] byt = t.EncodeToPNG();
m_photoName = Time.time + &.png&;
m_photoPath = Application.persistentDataPath + &/& + m_photoN
System.IO.File.WriteAllBytes(m_photoPath, byt);
//load image
WWW www = new WWW(&file://& + m_photoPath);
Sprite sprite = Sprite.Create(www.texture, new Rect(0, 0, Screen.width, (int)(Screen.width * aspect)), new Vector2(0.5f, 0.5f));
callback(sprite);
// 连续捕获照片
public IEnumerator SeriousPhotoes()
while (true)
yield return new WaitForEndOfFrame();
Texture2D t = new Texture2D(400, 300, TextureFormat.RGB24, true);
t.ReadPixels(new Rect(0, 0, Screen.width, (int)(Screen.width * aspect)), 0, 0, false);
t.Apply();
byte[] byt = t.EncodeToPNG();
System.IO.File.WriteAllBytes(Application.dataPath + &/MulPhotoes/& + Time.time.ToString().Split('.')[0] + &_& + Time.time.ToString().Split('.')[1] + &.png&, byt);
// using System.T
// Thread.Sleep(300);
下载地址:
链接:https://pan.baidu.com/s/1bo25P9P 密码:u9oj
访问:5730次
排名:千里之外}

我要回帖

更多关于 unity怎么连接ios 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信