已知问题

Kanzi Engine 中的已知问题

  • Kanzi API 的某些部分是用 C 编写的。在未来的 Kanzi 版本中,我们将继续努力将 API 转换为 C++。

  • 链接应用程序至没有来源的 SDK 随附的库时,会生成缺少调试信息的警告。

  • 出于性能原因,旋转的子2D节点的裁剪被忽略。例如,如果一个 Image 节点有一个子 Image 节点,并且您旋转子 Image 节点,父 Image 节点不会裁剪子 Image 节点。

  • Kanzi Engine 的当前限制是,如果一个 2D 节点被强制渲染到渲染目标(例如,带有旋转的 Viewport 2D),即使您在 2D 节点中禁用了裁剪,也会应用裁剪。

  • 当您更改 Render Target Texture 的 Samples 属性时,您必须重新启动 Preview 以应用更改。

  • 当 Kanzi Studio 中的字形缓存纹理已满时,Kanzi Studio 中的应用程序性能会下降。这不会影响您的 Kanzi 应用程序的性能,当您构建它并为目标平台适当调整字形缓存纹理的大小时。请参阅 图形缓存纹理大小。

  • 在 Preview 中运行时,Node2D_plugin 示例会打印警告。

  • 当用户滚动一个负项间距的绝对值大于列表框项宽度的 Trajectory List Box 3D 时,Kanzi 应用程序会冻结。

  • 使用 PinchManipulator::setScaleRecognitionThreshold 和 PinchManipulator::setRotationRecognitionThreshold 函数设置捏合手势的识别阈值不起作用。

  • 当您创建一个 Prefab Placeholder 3D 节点时,在某些情况下 Kanzi 会选择一个无法实例化的预设。这可能导致未定义的行为,并使 Preview 显示不正确的内容。

    解决办法:

    1. 按下 F8 以退出 Preview。

    2. 在 Prefab Placeholder 3D 节点中,将预设设置为正确的预设。

    3. 按下 F5 以启动 Preview。

  • LevelOfDetail3D 节点无法正常工作。

Kanzi Studio 中的已知问题

  • 如果您已经在 VC++ 2015 x64 或 x86 可再发行组件之上安装了 VC++ 2017 x64 可再发行组件,Kanzi 安装程序将无法安装。

    解决方法:手动运行 VC++ 2017 x64 可再发行组件安装程序,并选择修复安装选项。最简单的方法是运行“添加或删除程序”,在 VC++ 2017 x64 可再发行组件旁边点击“修改”,然后进行修复。

  • 当您两次导入相同的 dds 文件时,Kanzi Studio 会创建一个无效纹理,并在 Image 属性下拉菜单中显示无效内容。

    解决方法:在文件资源管理器中更新文件,或者在再次导入之前删除 dds 文件及其纹理。

  • Boot Camp 更新 6.0 中包含的 AMD Radeon R9 M370X 的设备驱动程序导致 Preview 无法工作。要解决此问题,使用 Windows 设备管理器回滚到先前版本的驱动程序。

  • 导入包含使用自定义中心点的动画的 fbx 文件会导致 Kanzi Studio 终止。这是由 Autodesk 的 FBX SDK 中提供的 FBX 导入器的缺陷引起的。

    导入失败后,打开 Kanzi Studio 项目:

    1. 在 Library > Resource Files > 3D Assets 中选择导致 Kanzi Studio 终止的 fbx 文件。

    2. 在 Properties 中禁用 Convert Pivot Points 属性。

      ../_images/disable-convert-pivot-points.png
      • 当禁用时,Kanzi Studio 会忽略 fbx 文件中的自定义枢轴点,这可能会影响使用自定义枢轴点的节点的旋转和缩放动画。

      • 当启用时,Kanzi Studio 会将枢轴点重置为默认位置,而不会对动画进行视觉更改。这是推荐的设置,因为 Kanzi Studio 不支持自定义枢轴点。

      • 自定义枢轴点包含一个额外的变换,Kanzi Studio 将其烘焙为单个变换。在某些情况下,自定义枢轴点不包含任何数据,因此禁用此选项不会影响内容。

    3. 在 Library > Resource Files > 3D Assets 中,右键单击导致 Kanzi Studio 终止的 fbx 文件,然后选择 Import 3D Asset File 以导入该文件。

      ../_images/import-3d-asset-file.png
  • Kanzi Studio 不支持导入动画枢轴点。

  • Kanzi Studio 不支持这些 glTF 2.0 功能:

    • 双面材料

    • 点和线图元

    • 具有不同 S 和 T 维度环绕模式的采样器。Kanzi Studio 对两个维度都使用 S 维度的环绕模式。

  • OpenGL ES (IMG) 图形 API 不够稳定,无法用于开发。仅将 IMG 图形 API 用于测试。对于内容开发,使用 OpenGL。在 Edit > User Preferences > Advanced > Default Preview OpenGL ES Wrapper 中设置 Default Preview OpenGL ES Wrapper。

  • 当您在 Parallels 或 VMWare Fusion 中运行 Kanzi Studio 时,IMG Preview OpenGL ES Wrapper 因为 IMG 包装器中的一个错误而无法工作。

    解决方法:使用 GL 包装器。

  • Kanzi Studio 仅与屏幕 DPI 设置为 100% 时兼容。

  • 当您关闭 Node Tree 窗口时,窗口中的选择不会正确更新。

  • 所有资产的缩略图都不能正确渲染。

  • 在 Node Tree 中粘贴包含蒙皮网格的 Scene 预设不起作用。

    解决方法:将 Scene 预设从 Prefabs 拖放到项目中您要使用它的位置。

  • 当您从在另一个 Kanzi Studio 实例中打开的引用 Kanzi Studio 项目重新加载更改时,Kanzi Studio 可能会变得不稳定。

    解决方法:在重新加载引用项目中的更改之前,关闭被引用的项目。

  • 一个节点包含同一预设件的多个实例时,您无法从包含这些预设件的节点创建绑定到该预设件实例内的节点属性。

    解决方法:将您要绑定的属性放在预设的根部,并在预设实例的根部创建绑定。请参阅 自定义节点预设件的实例。

  • 当您更改 Prefab View 的 Prefab Template 属性的值时,Kanzi 无法显示预设模板属性的默认值。当您以任何其他方式更改属性的值而不是在 Properties 中设置它时,例如使用状态管理器或应用程序代码时,就会发生这种情况。当您更改 Render Pass View 中的 Render Pass Prefab 属性的值时,也会发生同样的问题。

    解决方法:在 Kanzi Studio 中,将每个预设模板或渲染通道预设的属性添加到 Prefab View 或 Render Pass View,您设置的 Prefab View 或 Render Pass View 使用。

  • Kanzi Studio 不支持将原始网格的 Mesh Material 属性设置为来自引用项目的材质。

    解决方法:使用 Material (Model3D.Material) 属性来设置材质。Material 属性的值会覆盖 Mesh Material 属性的值。

  • Smart materials 不支持同时使用变形和蒙皮。

  • 当您禁用或删除到源的绑定时,Preview 不会显示禁用或删除的结果。

    解决方法:要查看结果,请重启 Preview。

  • 当您从 Kanzi Studio 部署到 Android 设备一个使用 Kanzi Studio project 模板和 Code Behind 功能的项目时,部署的应用程序在打开后不久便会在 Android 设备上终止。

    解决方法:要部署此类应用程序,请使用 Android Studio 而不是 Kanzi Studio。

  • 当您从 Kanzi Studio 部署到 Android 设备的应用程序时,该应用程序加载在 <project_name>.kzb.cfg 文件中列出的 kzb 文件,由于无法加载 kzb 文件,应用程序终止。

    解决办法:

    在 Kanzi Studio 中,首先导出 kzb 文件,然后构建并部署 Android 包:

    1. File > Export > Export KZB。

    2. File > Export > Build Android Package。

  • 在您重命名 Kanzi Studio 项目后,Kanzi Studio 会将已存在的 Code Behind 项目视为常规 Kanzi Engine Plugin。这意味着您无法使用 Activity Browser 打开此类 Code Behind 项目,并且启动或重启 Preview 不会自动开始重建此类 Code Behind 项目。

    解决方法:要构建代码隐藏项目,请在 Visual Studio 中手动打开并构建代码隐藏项目,然后重新启动 Kanzi Studio Preview。

  • 如果您卸载了 NDK 21.1.6352462,当您选择 File > Export > Build Android Package 时,教程:Android 的数据源 的应用程序无法从 Kanzi Studio 构建。在 Kanzi Studio 中,Log 窗口显示此错误:

    FAILURE: Build failed with an exception.
    * What went wrong:
    A problem occurred configuring project ':app'.
    > NDK at C:\Users\<User>\AppData\Local\Android\Sdk\ndk\21.1.6352462 did not have a source.properties file
    

    这是 Android Gradle Plugin 版本 4.1.3 中的一个问题,该版本错误地默认使用 NDK 21.1.6352462,即使 app/build.gradle 将 android.ndkVersion 设置为 21.3.6528147。

    解决方法:要构建教程应用程序,请删除 C:/Users/<User>/AppData/Local/Android/Sdk/ndk/21.1.6352462 目录,并从 Kanzi Studio 运行构建应用程序。在构建期间,Gradle 下载 NDK 21.1.6352462,安装它,并使用它来构建教程应用程序。

Kanzi Activity 的已知问题

  • Activity Browser 仅在 Preview 处于活动状态时才能使用。由于 Activity Browser 反映的是 Preview 应用程序的运行时状态,因此当 Preview 未处于活动状态时,它处于禁用状态。

  • 预览工具目前不支持 Activity。Activity 和 Activity Host 节点缺少 Preview 可视化和交互功能:

    • Preview 不会为选中的 Activity 或 Activity Host 节点显示选择叠加层。

    • 您无法在 Preview 中修改 Activity 或 Activity Host 节点及其内容,也无法与之交互。

    • Node Tool 无法用于 Activity 或 Activity Host 节点。

    解决方法:要对 Activity 使用 Preview 工具,请在 Preview Composition 选项卡中打开相应的 Activity 预设件。在此情况下,该 Activity 完全支持所有 Preview 可视化和交互功能。

  • Activate Activity Message 和 Deactivate Activity Message 需要相对于 Activity Host 的 Activity Activation Path。但是,Copy Activation Path 命令复制的是包含根节点的完整路径,与该消息参数的格式不兼容。

    解决方法:在 Activate Activity Message 或 Deactivate Activity Message 中使用复制的路径之前,手动编辑该路径以删除根节点前缀。

  • Deactivate Activity Message 会停用通往目标 Activity 的路径上的所有 Activity,而不仅仅是目标 Activity 本身。

  • 当您向已有迁移的 Activity 添加新迁移时,Kanzi Studio 会创建一个额外的状态机,并使先前创建的状态机处于断开连接状态。久而久之,这可能导致 Library 中积累多个断开连接的状态机。

    解决方法:添加迁移后,从 Library 中手动删除所有断开连接的状态机。

  • 使用 Activity 工作流时,Node Tree 窗口仅显示 Screen 和根 Activity Host。Activity 层级结构的其余部分仅在 Activity Browser 和 Prefabs 窗口中可见。

  • Node Tree 窗口的功能(例如缩略图和可见性控件)不可用于 Activity 内容,因为编辑已转移到 Prefabs 窗口和 Activity Browser 中进行。

  • Prefabs 窗口与 Activity 工作流并不完全一致。它允许创建无效的 Activity 结构,例如,将 Activity 创建为另一个 Activity 的直接子节点,而这不是有效的 Activity 层级结构。

    解决方法:使用 Activity Browser 创建和管理 Activity 结构,以确保层级结构有效。

Kanzi SDK 中的已知问题

  • Coin 示例无法在 x86/x86_64 Android 模拟器上运行。

  • 早期版本 Kanzi 附带的 SCons 脚本会导入 imp 模块,而 Python 3.12 及更高版本已不再支持该模块。这可能导致使用 SCons 构建应用程序时出现 ModuleNotFoundError: No module named 'imp' 错误。

    解决方法:从 scripts/build.py 中删除 import imp 这一行。

平台相关已知问题

  • 独立的 android-freetype 和 android-freetype-itype 平台包包含一个不必要的头文件:Engine/libraries/platforms/android-r21d-aarch64/opengl_es_2_0/include/EGL/eglplatform.h。

  • QNX 不再推荐使用 QCC 作为 CXX 编译器。编译 QNX 应用程序时会失败,并出现错误

    QCC is not a full path and was not found in the PATH.
    

    有关解决方法,请参阅 QNX 上的已知问题。

  • 当您使用 QNX 7.0.0 并通过 QNX 软件中心更新您的 QNX 软件时,编译 Kanzi 应用程序会失败,并出现错误。

    Kanzi-3_6_5-qnx700_screen_aarch64-es3-freetype-static/Engine/include/kanzi/core/cpp/cstdio.hpp:42:12: error: 'std::snprintf' has not been declared
    

    QNX 在软件开发平台的某次更新中引入此错误,原因为更新的头文件中缺失 std::snprintf。

    解决方法:要消除编译错误,请在预处理器标志中添加 -DKZ_USE_C99_SNPRINTF 定义。

  • 在使用 ANGLE 作为 OpenGL ES 驱动程序的 Android 设备上,3D 内容渲染时可能出现残影拖尾效果。这是由 ANGLE 中的缺陷引起的。该问题将在即将发布的版本中解决。

    解决方法:在开发期间,您可以在 Android Studio 中设备设置的 Advanced 部分为 Android 虚拟设备选择其他 OpenGL ES 渲染器,以避免此效果。

另请参阅

发行说明和迁移指南