ข้ามไปที่เนื้อหา

Unreal Engine 5

คู่มือนี้อธิบายงานที่ต้องทำหลังจากติดตั้ง Hive SDK

การตั้งค่าฟีเจอร์การหมุนหน้าจออัตโนมัติ

เมื่อตั้งค่าทิศทางของหน้าจอเป็นทั้งสองทิศทาง (แนวนอนและแนวตั้ง) จะต้องมีการกำหนดค่าดังต่อไปนี้

แอนดรอยด์

ในการเปิดใช้งานฟีเจอร์การหมุนอัตโนมัติของหน้าจอให้ทำงานได้อย่างถูกต้องเมื่อกำหนดการหมุนหน้าจอไปยังทั้งสองทิศทาง (แนวนอนและแนวตั้ง) ในการสร้างแอป Android จะต้องมีการปรับเปลี่ยนโค้ดดังต่อไปนี้

  1. ไปที่ /Engine/Build/Android/Java/src/com/epicgames/unreal/GameActivity.java.template.
  2. เพิ่ม API HiveActivity.onConfigurationChanged().
    @Override
    public void onConfigurationChanged(Configuration newConfig)
    {
    HiveActivity.onConfigurationChanged(this, newConfig); // เพิ่ม
    super.onConfigurationChanged(newConfig);
    
    
    // ส่งต่อการจัดแนว
    boolean bPortrait = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT;
    nativeOnConfigurationChanged(bPortrait);
    }
    

iOS

ไม่จำเป็นต้องมีการกำหนดค่าพิเศษเพิ่มเติมสำหรับการหมุนหน้าจอโดยอัตโนมัติสำหรับ Hive SDK Unreal Engine 5 iOS.

การเปลี่ยนแปลงการสร้าง Xcode (iOS)

ในการใช้ Hive SDK v4 คุณต้องเปลี่ยนระบบการสร้าง Xcode เป็น Legacy Build ตามที่แสดงด้านล่าง ให้ยกเลิกการเลือก Latest Xcode ในส่วน Project Settings > Platform > Xcode Project ของแผงด้านซ้าย

การใช้ HIVEAppDelegate (iOS)

ในการใช้ SDK ของ Hive ในสภาพแวดล้อมการพัฒนา iOS ให้ปรับเปลี่ยน AppDelegate โดยใช้ Swizzling เพิ่มโค้ดต่อไปนี้ในระหว่างขั้นตอนการเริ่มต้นเมื่อแอปเริ่มทำงาน

////////////////////////////////////////////////////////////////
// Add IOSAppDelegate.h header
#if PLATFORM_IOS
#include "Runtime/ApplicationCore/Public/iOS/IOSAppDelegate.h"
#endif
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
// Additional AppDelegate code
#if PLATFORM_IOS
UIApplication * dummyApplication = [UIApplication sharedApplication];

Class clzHIVEAppDelegate = NSClassFromString(@"HIVEAppDelegate");
SEL selApplicationDidFinishLaunchingWithOptions = NSSelectorFromString(@"application:didFinishLaunchingWithOptions:");
if( clzHIVEAppDelegate != nil && [clzHIVEAppDelegate respondsToSelector:selApplicationDidFinishLaunchingWithOptions] ) {
    NSMethodSignature *method = [clzHIVEAppDelegate methodSignatureForSelector:selApplicationDidFinishLaunchingWithOptions];
    if (method != nil) {

        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:method];
        [invocation setSelector:selApplicationDidFinishLaunchingWithOptions];
        [invocation setTarget:clzHIVEAppDelegate];
        [invocation setArgument:(void*)&dummyApplication atIndex:2];
        NSDictionary *localLaunchOptions = [IOSAppDelegate GetDelegate].launchOptions;
        if( localLaunchOptions != nil ) {
            [invocation setArgument:(void*)&localLaunchOptions atIndex:3];
        }
        [invocation invoke];
    }
}
#endif
////////////////////////////////////////////////////////////////

การตั้งค่า FmallocAnsi (iOS)

เพื่อให้แน่ใจว่ามีความเข้ากันได้ระหว่าง Unreal Engine iOS และ C++ Standard Template Library จำเป็นต้องตั้งค่า FMallocAnsi ดังนี้ เพิ่มโค้ดต่อไปนี้ลงในไฟล์ {YourProject}.Target.cs ของโปรเจกต์แอปของคุณ

public class YourProjectTarget : TargetRules
{
    public YourProjectTarget(TargetInfo Target) : base(Target)
    {  
        // Force ANSI allocator for the app client
        if(Target.Platform == UnrealTargetPlatform.IOS)
        {
            GlobalDefinitions.Add("FORCE_ANSI_ALLOCATOR=1");
        }
    }
}