Aktiver telefonlommelykt fra Game in Unity
I denne opplæringen skal vi utforske hvordan du kontrollerer lommelykten (fakkelen) på en mobilenhet direkte fra et Unity-spill ved å bruke plattformspesifikke APIer gjennom plugins. Denne funksjonaliteten kan forbedre innlevelse i spillet eller gi nytte i appen din.
Oppsett
Før du dykker inn i koden, sørg for at du har en mobilenhet med lommelykt (de fleste smarttelefoner har denne funksjonen). Sørg også for at du har Unity installert og en grunnleggende forståelse av C#-skripting.
Implementeringstrinn
Trinn 1: Opprett en Native Plugin
Vi lager en innebygd plugin for både iOS og Android for å få tilgang til deres respektive lommelykt-API-er.
For Android (Java)Lag en Java-klasse som samhandler med Android lommelykt API.
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)Lag en Objective-C- eller Swift-klasse som samhandler med iOS lommelykt-API.
#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
Trinn 2: Unity C#-skripting
Lag et C#-skript i Unity for å kalle disse native funksjonene ved å bruke plattformspesifikk betinget kompilering.
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;
}
}
Trinn 3: Integrasjon og testing
Fest FlashlightController
-skriptet til et GameObject i Unity-scenen din. Test funksjonaliteten ved å trykke på den angitte tasten (i dette tilfellet 'F') for å slå lommelykten av og på. Sørg for å bygge og distribuere de native plugins til målenhetene dine.
Konklusjon
Du har nå lært hvordan du kontrollerer lommelykten på en mobilenhet direkte fra et Unity-spill ved å bruke plattformspesifikke APIer gjennom plugins. Denne tilnærmingen lar deg integrere enhetsspesifikke funksjoner sømløst i Unity-prosjektene dine, noe som forbedrer både spilling og nytte for brukerne dine.