אפשר פנס טלפון מ-Game in Unity

במדריך זה, נחקור כיצד לשלוט בפנס (לפיד) במכשיר נייד ישירות ממשחק Unity באמצעות ממשקי API ספציפיים לפלטפורמה באמצעות תוספים. פונקציונליות זו יכולה לשפר את ההתעמקות במשחק או לספק שימוש באפליקציה שלך.

להכין

לפני הצלילה לקוד, ודא שיש לך מכשיר נייד עם פנס (לרוב הסמארטפונים יש תכונה זו). כמו כן, ודא שיש לך Unity מותקן והבנה בסיסית של סקריפטים של C#.

שלבי יישום

שלב 1: צור תוסף מקורי

אנו ניצור תוסף מקורי הן עבור iOS והן עבור Android כדי לגשת לממשקי ה-API של הפנס בהתאמה.

For Android (Java)

צור מחלקת Java שמקיימת אינטראקציה עם ה-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)

צור מחלקה של Objective-C או Swift שמקיימת אינטראקציה עם ה-API של פנס 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

שלב 2: Unity Scripting C#

צור סקריפט C# ב-Unity כדי לקרוא לפונקציות המקוריות הללו באמצעות קומפילציה מותנית ספציפית לפלטפורמה.

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;
    }
}

שלב 3: אינטגרציה ובדיקה

צרף את הסקריפט FlashlightController ל-GameObject בסצינת Unity שלך. בדוק את הפונקציונליות על ידי לחיצה על המקש המיועד (במקרה זה, 'F') כדי להדליק ולכבות את הפנס. הקפד לבנות ולפרוס את התוספים המקוריים למכשירי היעד שלך.

סיכום

כעת למדת כיצד לשלוט בפנס במכשיר נייד ישירות מתוך משחק Unity באמצעות ממשקי API ספציפיים לפלטפורמה באמצעות תוספים. גישה זו מאפשרת לך לשלב תכונות ספציפיות למכשיר בצורה חלקה בפרויקטי Unity שלך, תוך שיפור המשחקיות והשימושיות עבור המשתמשים שלך.