> 文章列表 > 【Unity】基于AVFoundation开发MacOS摄像头(二)

【Unity】基于AVFoundation开发MacOS摄像头(二)

【Unity】基于AVFoundation开发MacOS摄像头(二)

【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个很有价值的参考样例工程

  1. 大神keijiro的工程:GitHub - keijiro/Avfi: Simple video recorder with AVFoundation
  2. 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编辑器,编辑器有警告提示,之前没注意,添加的新接口一直找不到,我一度怀疑自己的人品。

参考链接:

  1. iOS开发SDK(.framework静态库,.bundle资源文件,脚本打包SDK和.bundle)_pods 脚本打包sdk_江湖两把刀的博客-CSDN博客
  2. https://www.cnblogs.com/yongfengnice/p/7816140.html(查看bundle或so文件的接口主要用的是objdump,注意bundle需要最里面的那个文件,不是bundle本身。)
  3. objdump(Linux)反汇编命令使用指南 - 知乎
  4. Unity - Manual: Native plug-ins多看官方文档
  5. Unity - Manual: Building plug-ins for desktop platforms多看官方文档
  6. Xcode 编写 Unity 在Mac 平台的Bundle插件_LitteBlueSea的博客-CSDN博客c++的代码,没有oc的,不全。
  7. Setting up iOS Framework for Unity - DZone还有用framework的;
  8. dylib | Apple Developer Documentation官方dylib文档;
  9. Plug-in and play: Add Apple frameworks to your Unity game projects - WWDC22 - Videos - Apple Develog官方教学视频
  10. Search - Apple Developer去官方论坛搜
  11. iOS开发进阶五:动态库 - 简书dylib有问题的时候看看这个
  12. https://www.cnblogs.com/andrewwang/p/8536239.htmldylib的
  13. Mac dylib动态库加载路径问题(以OpenCV为例) - 简书也是dylib的
  14. How to make Unity find .dylib files? - Unity Answers嗯嗯,dylib
  15. dylib浅析 - leisuro的博客 | leisuro's Blogdylib
  16. Mac OS X 构建 dylib - 简书 dylib