تمكين مصباح الهاتف من اللعبة في Unity

في هذا البرنامج التعليمي، سنستكشف كيفية التحكم في المصباح اليدوي (الشعلة) على جهاز محمول مباشرةً من لعبة Unity باستخدام واجهات برمجة تطبيقات خاصة بالمنصة من خلال المكونات الإضافية. يمكن أن تعمل هذه الوظيفة على تعزيز الانغماس في اللعب أو توفير فائدة داخل التطبيق الخاص بك.

يثبت

قبل الخوض في البرمجة، تأكد من أن لديك جهازًا محمولًا مزودًا بمصباح يدوي (تتمتع معظم الهواتف الذكية بهذه الميزة). وتأكد أيضًا من تثبيت Unity وفهم أساسي لبرمجة النصوص بلغة C#.

خطوات التنفيذ

الخطوة 1: إنشاء مكون إضافي أصلي

سنقوم بإنشاء مكون إضافي أصلي لكل من نظامي التشغيل iOS وAndroid للوصول إلى واجهات برمجة تطبيقات المصباح اليدوي الخاصة بهما.

For Android (Java)

قم بإنشاء فئة Java تتفاعل مع واجهة برمجة تطبيقات مصباح 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)

قم بإنشاء فئة Objective-C أو Swift تتفاعل مع واجهة برمجة تطبيقات iOS flashlight.

#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 برمجة النصوص بلغة 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 بكائن لعبة في المشهد Unity الخاص بك. اختبر الوظيفة بالضغط على المفتاح المخصص (في هذه الحالة، 'F') لتشغيل المصباح وإيقاف تشغيله. تأكد من إنشاء المكونات الإضافية الأصلية ونشرها على الأجهزة المستهدفة.

خاتمة

لقد تعلمت الآن كيفية التحكم في المصباح اليدوي على جهاز محمول مباشرةً من داخل لعبة Unity باستخدام واجهات برمجة تطبيقات خاصة بالمنصة من خلال المكونات الإضافية. يتيح لك هذا النهج دمج الميزات الخاصة بالجهاز بسلاسة في مشاريع Unity الخاصة بك، مما يعزز كل من طريقة اللعب والفائدة لمستخدميك.