Włącz latarkę telefonu z gry w Unity
W tym samouczku pokażemy, jak sterować latarką (torch) na urządzeniu mobilnym bezpośrednio z gry Unity, używając interfejsów API specyficznych dla platformy za pośrednictwem wtyczek. Ta funkcjonalność może zwiększyć immersję w rozgrywce lub zapewnić użyteczność w Twojej aplikacji.
Organizować coś
Zanim zagłębisz się w kod, upewnij się, że masz urządzenie mobilne z latarką (większość smartfonów ma tę funkcję). Upewnij się również, że masz zainstalowany Unity i podstawową wiedzę na temat skryptów C#.
Etapy wdrażania
Krok 1: Utwórz wtyczkę natywną
Stworzymy natywną wtyczkę dla systemów iOS i Android umożliwiającą dostęp do interfejsów API latarek.
For Android (Java)Utwórz klasę Java, która będzie współpracować z interfejsem API latarki 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)Utwórz klasę Objective-C lub Swift, która będzie współpracować z interfejsem API latarki 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
Krok 2: Unity Skrypty C#
Utwórz skrypt C# w Unity, aby wywołać te natywne funkcje za pomocą kompilacji warunkowej specyficznej dla platformy.
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;
}
}
Krok 3: Integracja i testowanie
Dołącz skrypt FlashlightController
do GameObject w swojej scenie Unity. Przetestuj funkcjonalność, naciskając wyznaczony klawisz (w tym przypadku 'F'), aby włączać i wyłączać latarkę. Upewnij się, że zbudujesz i wdrożysz natywne wtyczki na swoich urządzeniach docelowych.
Wniosek
Teraz nauczyłeś się, jak kontrolować latarkę na urządzeniu mobilnym bezpośrednio z gry Unity, używając specyficznych dla platformy interfejsów API za pośrednictwem wtyczek. To podejście pozwala na bezproblemową integrację funkcji specyficznych dla urządzenia z projektami Unity, zwiększając zarówno rozgrywkę, jak i użyteczność dla użytkowników.