【Unity】基于AVFoundation开发MacOS摄像头(一)_GrimRaider的博客-CSDN博客实现一个Camera设备驱动,代替unity自带WebCamTexturehttps://blog.csdn.net/GrimRaider/article/details/130127229
目标1:实现bridge,创建一个简单的macOS库,导入unity,使用c#成功调用接口。
dylib方案
一开始想的是使用dylib,使用过程中碰到1个问题:签名问题,自己build的dylib可以在自己的开发机上正常使用,但是安装到其他mac上就不行了,无论我怎么签名都不行,就是不能使用,从网上搜也找不到答案,有的说是dylib的签名得和app本身的签名一致,而且得给dylib的绝对路径才能正确加载。
bundle方案
找了好多天,才找到2个很有价值的参考样例工程:
- 大神keijiro的工程:GitHub - keijiro/Avfi: Simple video recorder with AVFoundation
- unity官方工程:GitHub - keijiro/Avfi: Simple video recorder with AVFoundation
大神keijiro有很多nb的工程,这个工程里面使用的是gcc编译oc代码,调用了AVFoundation,编译生成了bundle,直接拷贝到unity项目里就可以使用了。
官方工程的示例SimplestPluginExample目录下,使用的是xcode建立的bundle工程,编译出来的bundle直接拷贝到unity项目里即可使用。这个官方仓库里还有几个其他平台相关的工程,都不错,比如那个MoveWindowSample,我一直在用user32.dll撸代码,unity本身已经封装好了一部分窗口接口。
有示例工程就简单多了,oc的代码调用AVFoundation相关的类,编译出来就能用。没有示例就好痛苦,找不到正确的使用方法。
PS:需要注意的一点是,如果更新了bundle,需要重启unity编辑器,编辑器有警告提示,之前没注意,添加的新接口一直找不到,我一度怀疑自己的人品。
参考链接:
- iOS开发SDK(.framework静态库,.bundle资源文件,脚本打包SDK和.bundle)_pods 脚本打包sdk_江湖两把刀的博客-CSDN博客
- https://www.cnblogs.com/yongfengnice/p/7816140.html(查看bundle或so文件的接口主要用的是objdump,注意bundle需要最里面的那个文件,不是bundle本身。)
- objdump(Linux)反汇编命令使用指南 - 知乎
- Unity - Manual: Native plug-ins多看官方文档
- Unity - Manual: Building plug-ins for desktop platforms多看官方文档
- Xcode 编写 Unity 在Mac 平台的Bundle插件_LitteBlueSea的博客-CSDN博客c++的代码,没有oc的,不全。
- Setting up iOS Framework for Unity - DZone还有用framework的;
- dylib | Apple Developer Documentation官方dylib文档;
- Plug-in and play: Add Apple frameworks to your Unity game projects - WWDC22 - Videos - Apple Develog官方教学视频
- Search - Apple Developer去官方论坛搜
- iOS开发进阶五:动态库 - 简书dylib有问题的时候看看这个
- https://www.cnblogs.com/andrewwang/p/8536239.htmldylib的
- Mac dylib动态库加载路径问题(以OpenCV为例) - 简书也是dylib的
- How to make Unity find .dylib files? - Unity Answers嗯嗯,dylib
- dylib浅析 - leisuro的博客 | leisuro's Blogdylib
- Mac OS X 构建 dylib - 简书 dylib