游戏脚本移动平台分支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语言开发。平台原生库对应上述移动平台处理分支的类型二、类型三和类型四。
- 使用HarmonyOS应用开发语言重新编写代码。
- 添加HarmonyOS分支调用原生库。
- 使用HarmonyOS应用开发语言重新编写代码。
- 添加HarmonyOS系统交互C#类,内部使用UXX_OPENHARMONY进行控制,在C#业务控制逻辑中增加UXX_OPENHARMONY分支控制HarmonyOS系统交互C#类的调用。
-