Unity调用手机震动的一个坑

本文分享了在Unity中调用Android设备震动功能的经验。作者最初尝试通过AndroidStudio调用震动,但因参数传递问题受阻。最终,通过修改代码,成功实现了从Unity传入参数至Android并触发设备震动的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近公司让做一个调用手机震动的方法。

网上看了很多利用Android Studio去调用震动的,结果花了一下午时间都没弄成。

结果最后发现是因为传入unity 传入参数调用Android Studio方法时,没法传入数组。

以下是修改过之后的代码--------------------------------

unity 

    public void VibratorOn(int a,int b,int c)
    {
            AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject Jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
            Jo.Call("VibratorOn", a, b, c);
    }

 

Android Studio

  fun VibratorOn(a: Int,b: Int,c: Int)
{
    val vibrator = getSystemService(VIBRATOR_SERVICE) as Vibrator
    val A:Long= a.toLong();
    val B:Long= b.toLong();
    val longArr:LongArray= longArrayOf(A,B);
    vibrator.vibrate(longArr,c);
}

 

要在 Unity 中连接蓝牙并控制手机震动,可以使用 UnityAndroidJavaClass 和 AndroidJavaObject 类与 Android API 进行交互。 以下是实现该功能的大致步骤: 1. 在 Unity 中创建一个 C# 脚本。 2. 使用 AndroidJavaClass 和 AndroidJavaObject 类连接蓝牙并控制手机震动。 3. 在 Unity调用 C# 脚本。 以下是示例代码: 在 Unity 中创建一个 C# 脚本,并编写连接蓝牙并控制手机震动的代码: ``` using UnityEngine; public class BluetoothController : MonoBehaviour { private AndroidJavaObject bluetoothAdapter; void Start() { // 获取 BluetoothAdapter 对象 AndroidJavaClass bluetoothAdapterClass = new AndroidJavaClass("android.bluetooth.BluetoothAdapter"); bluetoothAdapter = bluetoothAdapterClass.CallStatic<AndroidJavaObject>("getDefaultAdapter"); // 如果蓝牙未开启,请求用户开启蓝牙 if (!bluetoothAdapter.Call<bool>("isEnabled")) { AndroidJavaObject enableIntent = new AndroidJavaObject("android.content.Intent", "android.bluetooth.adapter.action.REQUEST_ENABLE"); AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); activity.Call("startActivityForResult", enableIntent, 0); } } public void Vibrate() { // 控制手机震动 AndroidJavaObject vibrator = new AndroidJavaClass("android.os.Vibrator"); AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity"); vibrator.Call("vibrate", 1000); } } ``` 在 Unity调用 C# 脚本并控制手机震动: ``` public class Example : MonoBehaviour { public void OnButtonClick() { // 获取 BluetoothController 组件并调用 Vibrate 方法 BluetoothController bluetoothController = GetComponent<BluetoothController>(); bluetoothController.Vibrate(); } } ``` 这将连接蓝牙并控制手机震动。请注意,此示例仅为演示用途,您需要根据您的具体需求进行修改。同时,为了使此代码能够在 Android 设备上运行,您需要将其打包为 Android 应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值