跳到主要内容

游戏脚本移动平台分支HarmonyOS化处理

问题描述

如何适配移动平台处理分支及HarmonyOS化分支内的游戏逻辑。

解决方案

适配移动平台处理分支

在不同的平台处理分支类型中增加HarmonyOS平台有不同的方法,具体如下:

  • 类型一:如下,Android、iOS移动平台统一处理分支,您可直接在判断条件处增加UXX_OPENHARMONY。

    #if UXX_ANDROID || UXX_IOS
    ...
    #endif

    #if !UXX_ANDROID || !UNTIY_IOS
    ...
    #endif
  • 类型二:如下,Android、iOS移动平台分别处理分支,您需结合业务逻辑分析具体功能,再增加HarmonyOS分支处理。若平台分支各自实现原生库,则HarmonyOS系统也需利用原生语言实现功能,再封装好提供给UXX调用。

    #if UXX_ANDROID
    ...
    #elif UXX_IOS
    ...
    #endif

    #if UXX_ANDROID
    ...
    #endif
    #if UXX_IOS
    ...
    #endif
  • 类型三:如下,仅有Android移动平台处理分支,此类代码一般仅针对Android平台的特定逻辑,您需结合具体功能判断HarmonyOS平台是否需要实现此功能。若存在else分支,代码走读时需判别HarmonyOS系统走此分支是否存在问题。

    #if !UXX_ANDROID 
    ...
    #else
    ...
    #endif

    #if UXX_ANDROID
    ...
    #endif

    #if UXX_ANDROID
    ...
    #else
    ...
    #endif

    #if UXX_ANDROID && otherConditions
    ...
    #elif UXX_ANDROID && !otherConditions
    ...
    #endif
  • 类型四:如下,仅有iOS移动平台处理分支,是否添加HarmonyOS平台的分支处理原则同类型三一致。

    #if !UXX_IOS 
    ...
    #else
    ...
    #endif

    #if UXX_IOS
    ...
    #endif

    #if UXX_IOS
    ...
    #else
    ...
    #endif

    #if UXX_IOS && otherCondition
    ...
    #elif UXX_IOS && !otherCondition
    ...
    #endif

HarmonyOS化分支内部逻辑

移动平台处理分支的内部逻辑分为纯业务处理三方库交互

  • 对于纯业务处理,您需要根据游戏功能决定是否添加HarmonyOS平台的处理逻辑。
  • 对于三方库交互,您需要根据三方库的类型分类处理:
    • C/C++库。如下示例为C/C++库常见的平台宏处理代码形式,此形式是为了单独处理某个平台对于C/C++库的静态链接。若想适配HarmonyOS平台,您需要使用HarmonyOS编译工具链重新编译C/C++库,实现逻辑走else分支即可。

      #if UXX_IOS
      [DllImport("__internal__")]
      ...
      #else
      [DllImport("{libname}")]
      ...
      #endif
    • 平台原生库

      Android平台使用Java语言开发,iOS平台使用Objective-C语言开发。平台原生库对应上述移动平台处理分支的类型二、类型三和类型四。

      移动平台处理分支类型

      总结分支处理特点

      适配平台原生库的步骤

      类型二(Android、iOS移动平台分别处理分支)

      直接与平台原生库进行交互。

      1. 使用HarmonyOS应用开发语言重新编写代码。
      2. 添加HarmonyOS分支调用原生库。

      类型三(仅有Android移动平台处理分支)

      使用C#类封装了具体平台与平台原生库的交互,分支内部一般仅设计具体平台的宏处理。

      1. 使用HarmonyOS应用开发语言重新编写代码。
      2. 添加HarmonyOS系统交互C#类,内部使用UXX_OPENHARMONY进行控制,在C#业务控制逻辑中增加UXX_OPENHARMONY分支控制HarmonyOS系统交互C#类的调用。

      类型四(仅有iOS移动平台处理分支)