已知问题¶
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 应用程序会冻结。
当您创建一个 Prefab Placeholder 3D 节点时,在某些情况下 Kanzi 会选择一个无法实例化的预设。这可能导致未定义的行为,并使 Preview 显示不正确的内容。
解决办法:
按下 F8 以退出 Preview。
在 Prefab Placeholder 3D 节点中,将预设设置为正确的预设。
按下 F5 以启动 Preview。
TextBox2D 仅在 Windows 平台上实现。要使用它,您需要在应用程序代码的
registerMetadataOverride中加入以下代码片段:#if defined WIN32 WindowsImeBackend::registerModule(getDomain()); #endifGLSL 着色器中的自动资源绑定并非在所有情况下都有效。建议您在 GLSL 着色器中为所有资源使用显式绑定。
当应用程序移除或替换设置 Text Block 2D 或 Text Block 3D 节点的文本或字体属性的状态机时,该节点会保留其之前的文本布局和大小。当应用程序重命名状态对象的目标节点时,也会出现同样的情况。在 Preview 中,从状态中移除文本或字体属性时也可能出现这种情况。这适用于节点未使用 Word Wrap、Overflow 或 Truncation 的情况。
解决方法:更改状态机后,对每个此类 Text Block 节点调用
Node::invalidateMeasure。在 Preview 中,重新启动 Preview。
Kanzi Studio 中的已知问题¶
Kanzi Studio 在虚拟机上可能无法启动,在桌面版 Windows 系统上也会间歇性无法启动,并报告未处理的异常错误。
Windows 事件日志和/或 Kanzi Studio 日志中会包含类似以下内容的条目:
Unhandled exception: System.InvalidProgramException: Common Language Runtime detected an invalid program. at Rightware.Kanzi.Tool.ApplicationCommon.EnvironmentInitializer.***********(IEnumerable1 , Boolean )
解决方法:重新启动 Windows 或虚拟机。
导入 kzm 文件时,Kanzi Studio 无法从子目录加载 kzm 文件。
解决方法:在文件资源管理器中,将每个 kzm 文件复制到其资源类型的根目录中。例如,将材质从
Project1/Materials/subdirectory/复制到Project2/Materials/目录。当您两次导入相同的 dds 文件时,Kanzi Studio 会创建一个无效纹理,并在 Image 属性下拉菜单中显示无效内容。
解决方法:在文件资源管理器中更新文件,或者在再次导入之前删除 dds 文件及其纹理。
Boot Camp 更新 6.0 中包含的 AMD Radeon R9 M370X 的设备驱动程序导致 Preview 无法工作。要解决此问题,使用 Windows 设备管理器回滚到先前版本的驱动程序。
导入包含使用自定义中心点的动画的 fbx 文件会导致 Kanzi Studio 终止。这是由 Autodesk 的 FBX SDK 中提供的 FBX 导入器的缺陷引起的。
导入失败后,打开 Kanzi Studio 项目:
在 Library > Resource Files > 3D Assets 中选择导致 Kanzi Studio 终止的 fbx 文件。
在 Properties 中禁用 Convert Pivot Points 属性。
当禁用时,Kanzi Studio 会忽略 fbx 文件中的自定义枢轴点,这可能会影响使用自定义枢轴点的节点的旋转和缩放动画。
当启用时,Kanzi Studio 会将枢轴点重置为默认位置,而不会对动画进行视觉更改。这是推荐的设置,因为 Kanzi Studio 不支持自定义枢轴点。
自定义枢轴点包含一个额外的变换,Kanzi Studio 将其烘焙为单个变换。在某些情况下,自定义枢轴点不包含任何数据,因此禁用此选项不会影响内容。
在 Library > Resource Files > 3D Assets 中,右键单击导致 Kanzi Studio 终止的 fbx 文件,然后选择 Import 3D Asset File 以导入该文件。
Kanzi Studio 不支持导入动画枢轴点。
Kanzi Studio 不支持这些 glTF 2.0 功能:
双面材料
点和线图元
具有不同 S 和 T 维度环绕模式的采样器。Kanzi Studio 对两个维度都使用 S 维度的环绕模式。
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 属性的值。
当您禁用或删除到源的绑定时,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 包:
File > Export > Export KZB。
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,安装它,并使用它来构建教程应用程序。部分教程依赖于 XML_data_source 插件。由于示例和教程已不再包含在安装程序中,工程的编译可能会失败。解决方法:先下载 Data sources 教程以提供这些依赖项。受影响教程的 Get the tutorial 步骤现已包含此步骤。
对于 kzm 文件格式,覆盖现有 Kanzi 工程的功能无法正常工作。
导入包含使用智能材质进行变形的网格的工程时,导入的网格不会变形。在 Kanzi Studio 中,Log 窗口显示以下错误:
[create-vertexinputstate-attributesize] Binding 1 must provide attributes.
解决办法:
在 Kanzi Studio 中,导入工程后,保存并重新打开该工程:
File > Save Project 或 File > Save Project As…。
File > Open Project…。
选择在第 1 步中保存的工程。
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 模拟器上运行。
平台相关已知问题¶
独立的 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 平台上,以下窗口格式值为硬编码:
缓冲区大小为 24
Alpha 大小为 0
填充大小为 8
以下图形输出不支持 kzgfx:
QnxStreamQnxEGLPbuffer
当请求的配置不可用时,Android 应用程序可能无法在模拟器或设备上请求特定的表面属性。这是因为先前的最佳匹配逻辑已被严格匹配所取代。此问题在 Android x86_64 模拟器上更常见,但也可能影响其他平台。
解决方法:请求与设备上现有 EGL 配置相匹配的表面属性。