Aktiver telefonlommelygte fra Game in Unity
I denne vejledning vil vi undersøge, hvordan man styrer lommelygten (lygten) på en mobilenhed direkte fra et Unity spil ved hjælp af platformsspecifikke API'er gennem plugins. Denne funktionalitet kan forbedre gameplay-fordybelsen eller give nytte i din app.
Opsætning
Før du dykker ned i kode, skal du sikre dig, at du har en mobilenhed med en lommelygte (de fleste smartphones har denne funktion). Sørg også for at du har Unity installeret og en grundlæggende forståelse af C#-scripting.
Implementeringstrin
Trin 1: Opret et indbygget plugin
Vi opretter et indbygget plugin til både iOS og Android for at få adgang til deres respektive lommelygte API'er.
For Android (Java)Opret en Java-klasse, der interagerer med Android lommelygte 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)Opret en Objective-C eller Swift klasse, der interagerer med iOS lommelygte 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
Trin 2: Unity C# scripting
Opret et C#-script i Unity for at kalde disse indbyggede funktioner ved hjælp af platformsspecifik 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;
}
}
Trin 3: Integration og test
Vedhæft FlashlightController
scriptet til et GameObject i din Unity scene. Test funktionaliteten ved at trykke på den udpegede tast (i dette tilfælde 'F') for at tænde og slukke for lommelygten. Sørg for at bygge og implementere de native plugins til dine målenheder.
Konklusion
Du har nu lært, hvordan du styrer lommelygten på en mobilenhed direkte fra et Unity spil ved hjælp af platformsspecifikke API'er gennem plugins. Denne tilgang giver dig mulighed for at integrere enhedsspecifikke funktioner problemfrit i dine Unity-projekter, hvilket forbedrer både gameplay og nytteværdi for dine brugere.