unity设置iOS手机震动

玩很多游戏的时候,线性马达的触感很棒,unity封装的 Handheld.Vibrate() 持续时间是0.5s, 用到按键震动反馈因为时间太长,上手感很差。iOS 提供了另外一个接口 AudioServicesPlaySystemSound(1519);
需要用uinty调用IOS接口:

  1. 在unity iOS工程里创建oc混编文件,ShortVibrator.mm文件里代码如下
#import "ShortVibrator.h"
#import <AudioToolbox/AudioServices.h>
@implementation ShortVibrator

extern "C" void setVibratorIOS(){ //导出函数用extern C修饰
    AudioServicesPlaySystemSound(1519);
}

@end
  1. 在unity代码里调用
using System.Runtime.InteropServices; //需要用到的命名空间

#if UNITY_IOS 
    [DllImport("__Internal")]
    static extern void setVibratorIOS();//用static extern 声明是外部函数
#endif

代码比较简单,可能会遇到了几个编译上的问题:

Undefined symbols for architecture arm64:
  "_setVibratorIOS", referenced from:
      _IOSUtils_setVibratorIOS_m56D46F72C0D9623662142B280A78B7222B3BE0BE in Assembly-CSharp.o
     (maybe you meant: _IOSUtils_setVibratorIOS_m56D46F72C0D9623662142B280A78B7222B3BE0BE)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

之前是在iOS项目里加的mm文件,然后Unity-FrameWork 找不到,一直build-failed
需要加到Unity-FrameWork里
在这里插入图片描述
后面又发现编译成功之后无法安装:
在这里插入图片描述
原因是签名问题,解决方法是:
在这里插入图片描述

发布了19 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hookby/article/details/104589959