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.