You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unreal 4的C++代码中调用Kotlin编写的函数?

在Unreal Engine 4 C++中调用Kotlin函数的实现步骤

要在UE4 C++代码中调用你编写的Kotlin ShowCalibrationUI函数,需要通过JNI(Java Native Interface)完成跨语言交互,具体步骤如下:

1. 编写Java桥接类

UE4的C++无法直接调用Kotlin,需要先实现一个Java中间类作为桥接层,用来调用目标Kotlin函数。示例代码:

package com.yourcompany.yourproject; // 替换为你的实际包名

public class CalibrationBridge {
    // 供UE4 C++调用的静态方法
    public static void showCalibrationUI() {
        // 调用Kotlin类中的ShowCalibrationUI函数
        YourKotlinClass.ShowCalibrationUI();
    }
}

注意:将YourKotlinClass替换为包含ShowCalibrationUI函数的Kotlin类名,且确保Kotlin函数是public static修饰的,否则Java无法直接调用。

2. UE4 C++中通过JNI调用桥接类

在UE4的C++代码里,借助引擎提供的AndroidJNI工具类调用上述Java桥接方法。示例代码:

#include "Android/AndroidJNI.h"
#include "Android/AndroidApplication.h"

void UYourCustomUtility::TriggerCalibrationUI() // 自定义函数名,可按需修改
{
    JNIEnv* Env = FAndroidApplication::GetJavaEnv();
    if (!Env)
    {
        return;
    }

    // 查找Java桥接类的jclass对象
    jclass BridgeClass = Env->FindClass("com/yourcompany/yourproject/CalibrationBridge");
    if (!BridgeClass)
    {
        UE_LOG(LogTemp, Warning, TEXT("Failed to locate CalibrationBridge class"));
        return;
    }

    // 获取静态方法的ID
    jmethodID ShowCalibrationMethod = Env->GetStaticMethodID(BridgeClass, "showCalibrationUI", "()V");
    if (!ShowCalibrationMethod)
    {
        UE_LOG(LogTemp, Warning, TEXT("Failed to locate showCalibrationUI method"));
        Env->DeleteLocalRef(BridgeClass);
        return;
    }

    // 调用Java静态方法
    Env->CallStaticVoidMethod(BridgeClass, ShowCalibrationMethod);

    // 释放JNI局部引用,避免内存泄漏
    Env->DeleteLocalRef(BridgeClass);

    // 检查JNI调用是否产生异常
    if (Env->ExceptionCheck())
    {
        Env->ExceptionClear();
        UE_LOG(LogTemp, Error, TEXT("JNI call to showCalibrationUI threw an exception"));
    }
}

注意替换com/yourcompany/yourproject/CalibrationBridge为你实际的Java类包路径(用斜杠分隔包名),UYourCustomUtility替换为你自己的C++类名。

3. 打包与验证

  • 将Java桥接类和Kotlin类放入UE4项目的Plugins/YourPlugin/Source/ThirdParty/Android目录(或项目的Android源码目录),确保打包APK时这些类被正确编译进去。
  • 在UE4项目中调用上述C++函数,即可触发Kotlin端的ShowCalibrationUI方法,弹出校准UI。

关键注意事项

  • 你的Kotlin函数已经通过Handler切换到Android主线程执行,C++端无需额外处理线程同步。
  • 确保UE4项目的Android平台配置正确,包含匹配版本的SDK和NDK。
  • 若Kotlin函数不是静态方法,需要在Java桥接类中创建Kotlin类的实例后再调用方法。

内容的提问来源于stack exchange,提问作者Tazs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:55:26