Unity控制安卓和IOS振动功能大小和幅度的工具

利用寒假找了一个线上的实习,直接让我负责了一个消除类型的游戏,里面在每次放入时都要有一个轻微的振动效果,然而Unity仅仅提供了一个Handheld.Vibrate()供我们实现一个0.5s的振幅比较大(在我看来十分大,有种被电的感觉)的振动,没有任何参数可以调节振动幅度和大小,网上搜了半天也都是说这要写安卓底层的代码去控制,然而并没有人给出具体做法,这不拉垮了吗…不过还好公司有安卓和iOS工程师,在那位大哥的帮助下解决了这个问题,我直接导出了一个UnityPackage到资源中:
上传时是0积分,抓紧下载,哈哈

然后分装了一系列方法:
直接挂载然后调用VibrateForGivenDuration(int DurationInMilliseconds)方法即可,参数DurationInMilliseconds可以控制振动时长和幅度,在10左右进行调试即可

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;

public class UnityVibrator : MonoBehaviour
{
    #if UNITY_ANDROID && !UNITY_EDITER
        private static AndroidJavaObject plugin = null;
    # elif UNITY_IPHONE && !UNITY_EDITER
        [DllImport("__Internal")]
        public static extern void Vibrate();
    #endif

    void Awake () 
    {
        #if UNITY_ANDROID && !UNITY_EDITER
            plugin = new AndroidJavaClass("com.game.util.UnityAndroidVibrator").CallStatic<AndroidJavaObject>("instance");
        #endif
    }

    public void VibrateCustom()
    {
        #if UNITY_ANDROID && !UNITY_EDITER
            if(plugin!=null)
                plugin.Call("CustomVibrate", new long[]{0,5,10,5});
        # elif UNITY_IPHONE && !UNITY_EDITER
            try{
                Vibrate();   
            }catch (System.Exception){
            }
        #endif
    }

    public void VibrateForGivenDuration(int DurationInMilliseconds)
    {
        #if UNITY_ANDROID && !UNITY_EDITER
            if(plugin!=null)
                plugin.Call("VibrateForGivenDuration", DurationInMilliseconds);
        # elif UNITY_IPHONE && !UNITY_EDITER
            try{
                Vibrate();   
            }catch (System.Exception){
            }
        #endif
    }

    public void StopVibrate()
    {
        #if UNITY_ANDROID && !UNITY_EDITER
            if(plugin!=null)
                plugin.Call("StopVibrate");
        # elif UNITY_IPHONE && !UNITY_EDITER
        #endif
    }

    public void CustomVibrate(long[] Pattern)
    {
        #if UNITY_ANDROID && !UNITY_EDITER
            if(plugin!=null)
                plugin.Call("CustomVibrate", Pattern);
        # elif UNITY_IPHONE && !UNITY_EDITER
        #endif
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值