Aktifkan Senter Ponsel dari Game di Unity
Dalam tutorial ini, kita akan menjelajahi cara mengendalikan senter (obor) pada perangkat seluler langsung dari permainan Unity menggunakan API khusus platform melalui plugin. Fungsionalitas ini dapat meningkatkan pengalaman bermain atau menyediakan utilitas dalam aplikasi Anda.
Mempersiapkan
Sebelum mulai membuat kode, pastikan Anda memiliki perangkat seluler dengan lampu senter (sebagian besar ponsel pintar memiliki fitur ini). Pastikan juga Anda telah menginstal Unity dan memiliki pemahaman dasar tentang skrip C#.
Langkah-Langkah Implementasi
Langkah 1: Buat Plugin Asli
Kami akan membuat plugin asli untuk iOS dan Android untuk mengakses API senternya masing-masing.
For Android (Java)Buat kelas Java yang berinteraksi dengan API senter Android.
package com.example.flashlight;
import android.content.Context;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
public class Flashlight {
private Context context;
private CameraManager cameraManager;
private String cameraId;
public Flashlight(Context context) {
this.context = context;
cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try {
cameraId = cameraManager.getCameraIdList()[0];
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
public void enableFlashlight() {
try {
cameraManager.setTorchMode(cameraId, true);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
public void disableFlashlight() {
try {
cameraManager.setTorchMode(cameraId, false);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
}
For iOS (Objective-C/Swift)Buat kelas Objective-C atau Swift yang berinteraksi dengan API senter iOS.
#import <AVFoundation/AVFoundation.h>
@interface Flashlight : NSObject
- (void)enableFlashlight;
- (void)disableFlashlight;
@end
@implementation Flashlight
- (void)enableFlashlight {
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch] && [device isTorchAvailable]) {
[device lockForConfiguration:nil];
[device setTorchMode:AVCaptureTorchModeOn];
[device unlockForConfiguration];
}
}
- (void)disableFlashlight {
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]) {
[device lockForConfiguration:nil];
[device setTorchMode:AVCaptureTorchModeOff];
[device unlockForConfiguration];
}
}
@end
Langkah 2: Unity Scripting C#
Buat skrip C# di Unity untuk memanggil fungsi asli ini menggunakan kompilasi kondisional spesifik platform.
using UnityEngine;
public class FlashlightController : MonoBehaviour
{
private static Flashlight flashlight;
void Start()
{
flashlight = new Flashlight();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.F))
{
ToggleFlashlight();
}
}
void ToggleFlashlight()
{
if (IsFlashlightOn())
{
flashlight.DisableFlashlight();
}
else
{
flashlight.EnableFlashlight();
}
}
bool IsFlashlightOn()
{
// Implement check for flashlight state based on platform-specific logic
return false;
}
}
Langkah 3: Integrasi dan Pengujian
Lampirkan skrip FlashlightController
ke GameObject di adegan Unity Anda. Uji fungsionalitas dengan menekan tombol yang ditentukan (dalam kasus ini, 'F') untuk menyalakan dan mematikan lampu senter. Pastikan untuk membuat dan menyebarkan plugin asli ke perangkat target Anda.
Kesimpulan
Anda kini telah mempelajari cara mengendalikan senter pada perangkat seluler langsung dari dalam game Unity menggunakan API khusus platform melalui plugin. Pendekatan ini memungkinkan Anda untuk mengintegrasikan fitur khusus perangkat dengan lancar ke dalam proyek Unity Anda, yang meningkatkan gameplay dan utilitas bagi pengguna Anda.