将 Kanzi Studio 项目合并到 Kanzi 应用程序中。

您可以将多个 Kanzi Studio 工程的内容组合到一个 Kanzi 应用程序中。这样您可以:

  • 将 Kanzi 应用程序开发分配给多个团队。每个团队可以同时处理同一应用程序的不同部分。

  • 在您的 Kanzi 应用程序中包含仅在 kzb 文件中可用的内容。

  • 使用仅包含您要在多个工程中使用的资源的 Kanzi Studio 工程。

  • 通过将您的 Kanzi 应用程序拆分为多个 Kanzi Studio 项目来简化其结构。

例如,您在开发由多个应用程序构成的车载信息娱乐应用程序时,可以在一个或多个 Kanzi Studio 项目中开发这些应用程序中的每一个。然后,您使用一个 Kanzi 应用程序将这些 Kanzi Studio 项目合并为一个 Kanzi 应用程序。

../../_images/multi-project-example.svg

要将 Kanzi Studio 项目合并为一个 Kanzi 应用程序:

要使用主题和本地化,当您将多个 Kanzi Studio 项目合并到一个 Kanzi 应用程序中时,必须使主题组和本地化表对应用程序主项目的 Screen 节点可访问。请参阅 在多个 Kanzi Studio 项目中使用主题和本地化,并将其合并到一个 Kanzi 应用程序中。。

通过完成教程,了解如何结合来自 Kanzi Studio 项目的内容。请参阅 教程:将 Kanzi Studio 项目合并为一个 Kanzi 应用程序。。

Kanzi Studio 解决方案结构

Kanzi Studio 解决方案是指用于将多个 Kanzi 应用程序组合到一个 Kanzi 应用程序中的 Kanzi Studio 工程。

当您创建 Kanzi 解决方案时,请使用以下指南:

  • 解决方案项目是您的 Kanzi 应用程序的主要 Kanzi Studio 项目。您使用它来组合相关的 Kanzi Studio 项目,并构建该解决方案中所有 Kanzi 应用程序的应用程序代码。

  • 当您创建一个解决方案项目时,在 Kanzi Studio 中使用最适合您正在创建的应用程序类型的模板之一:

    • Application 模板创建一个带有 Kanzi Engine 应用程序的 Kanzi Studio 项目。

    • Application with Kanzi Engine plugin 模板创建一个包含 Kanzi Engine 插件的 Kanzi Engine 应用程序的 Kanzi Studio 项目。

    • Application with data source plugin 模板创建一个包含数据源插件模板的 Kanzi Engine 应用程序的项目。

    • Android application 模板创建一个包含 Kanzi Android 框架应用程序的 Kanzi Studio 项目。

    • Android application with Java plugin 模板创建一个包含 Kanzi Engine Java 插件的基于 Kanzi Android 框架的 Kanzi Studio 项目。

    请参阅 创建项目。

    ../../_images/multi-project-new-project-main.png
  • 在 Kanzi Studio 解决方案的 Android Studio 或 Visual Studio 项目中,添加应用程序代码,以定义 Kanzi 应用程序的逻辑。

  • 如果您要添加到 Kanzi Studio 解决方案的 Kanzi Studio 项目包含应用程序代码,请将此类项目的 Visual Studio 项目添加到 Kanzi 解决方案项目的 Visual Studio 解决方案中。

    ../../_images/multi-project-vs-add-project.png ../../_images/multi-project-vs-projects.png
  • 创建或挑选最适合用作解决方案工程的一个工程,在其中您可以将 Kanzi Studio 工程和 kzb 文件合并为一个单一的 Kanzi 应用程序。

    例如,它可以是只包含应用程序代码并且从其他工程或文件获取节点和资源的工程,或者是用作所有其他应用程序的基项的现有应用程序。

  • 当您为 Kanzi 解决方案导出 kzb 文件时,Kanzi Studio 会从解决方案中的所有 Kanzi Studio 项目导出 kzb 文件,并将它们复制到解决方案项目的 Application/bin 目录中。您可以在解决方案项目的 Binary Export Directory 属性中的 Project > Properties 中设置此位置。

    ../../_images/project-properties-main.png ../../_images/main-project-properties.png

当您将 Kanzi Studio 项目添加到 Kanzi 解决方案时,使用以下指南:

  • 对于要添加到解决方案的项目,使用 Kanzi Studio project 模板,并在您的 Kanzi 解决方案的 Visual Studio 解决方案中定义所有此类项目的应用程序逻辑。请参阅 创建项目。

    ../../_images/multi-project-new-project-stats.png
  • 当您想要创建一个项目以存储您希望在 Kanzi 解决方案中的项目之间共享的公共资源时,按 Alt 并右键单击 Library > Project References,并选择 New Resource Project。

    资源项目在节点树中仅包含 Screen 节点,并且不包含默认的 Kanzi Studio 项目资源,例如 Default Texture 和 DefaultBackground 纹理。

    ../../_images/new-resource-project.png
  • 将您要添加到解决方案的工程放入该解决方案工程的根目录。即使这些工程形成层次结构,也要这样做。

    例如,如果您使用一个工程共享资源,其他工程引用该工程,请将资源工程保存在解决方案工程的根目录中。

  • 当您向 Kanzi 解决方案添加一个引用外部文件的项目时,请将这些文件复制到在 Kanzi 解决方案项目的项目属性中 Preview Working Directory 属性中设置的目录。默认情况下,这是 Kanzi 解决方案项目的 Application/bin 目录。

    ../../_images/preview-working-directory.png
  • 当您向解决方案中添加新的依赖文件时,更新解决方案构建脚本。

  • 如果您希望将应用程序逻辑保留在添加到解决方案的项目中,当您在 Kanzi Studio 中创建项目时,使用 Application、Application with Kanzi Engine plugin 或 Application with data source plugin 模板,并将此类项目的 Visual Studio 项目添加到 Kanzi 解决方案项目的 Visual Studio 解决方案中。执行此操作时,确保将:

    • 更新解决方案构建脚本,使其包含您所添加的工程。

    • 配置解决方案的 Visual Studio 项目,以构建并复制项目使用的 Application/bin 目录和依赖项的内容到解决方案的 Application/bin 目录。在 Kanzi 解决方案的 Visual Studio 解决方案中,添加到主项目的属性页 > 配置属性 > 构建事件 > 预构建事件 > 命令行:

      if not exist "..\..\..\bin" mkdir ..\..\..\bin
      

      并对您添加到 Kanzi 解决方案的每个项目添加:

      xcopy ..\..\..\..\<ProjectName>\Application\bin ..\..\..\bin  /Y
      
  • 将同一解决方案中的所有 Kanzi Studio 项目设置为使用相同的颜色工作流程。请参阅 颜色工作流程。

    ../../_images/color-workflow-linear.png

使用 Kanzi Studio 项目中的预设件和资源

要使用 Kanzi Studio 项目中的预设件和资源:

  1. 打开或创建一个您要在其中使用来自其他 Kanzi Studio 工程内容的 Kanzi Studio 工程。

    自此,该工程被称为引用工程。

  2. 在 Library 中,按 Alt 并右键单击 Project References,选择 Existing Project,选择您要在引用工程中使用其内容的 Kanzi Studio 工程,然后点击 Open。

    Kanzi Studio 在新选项卡中加载项目。如果该项目包含项目引用,Kanzi Studio 加载引用指向的项目。

    自此,这些工程被称为被引用工程。

    在项目选项卡中,Preview 图标 active 标记在 Preview 中处于活动状态的项目。

    ../../_images/project-reference-create-existing-project.png ../../_images/stats-and-resources-project-tabs.png

    小技巧

    要在 Preview 窗口中查看项目,请在项目选项卡中执行以下操作之一:

    • 右键单击该项目的选项卡并选择 Show in Preview。Kanzi Studio 在 Preview 中显示项目,但不选择该项目。

      ../../_images/stats-show-in-preview.png
    • 双击该项目的选项卡。Kanzi Studio 在 Preview 中显示该项目并选择该项目。

    小技巧

    在 Library > Project References 中的项目引用顺序决定了当您运行应用程序时,Kanzi 加载项目的 kzb 文件的顺序。

  3. 在 Preview 中,单击 Restart,并在 Kzb export 对话框中单击 Yes 以导出引用项目的 kzb 文件。

    Kanzi Studio 从引用的项目创建 kzb 文件和配置文件。

    这样就让被引用工程的内容对引用工程的 Preview 可用。

    ../../_images/preview-restart-button-orange-in-context.png

    小技巧

    默认情况下,当您启动或重新启动 Preview 时,Kanzi Studio 会询问您是否要导出引用项目的 kzb 文件。要将 Kanzi Studio 设置为始终导出 kzb 文件而不询问,可以:

    • 在 Kzb export 对话框中启用 Do not ask me again 选项,然后单击 Yes。

      ../../_images/kzb-export-dialog.png
    • 选择 Edit > User Preferences,并在 Advanced 选项卡中将 Referenced project kzb file export behavior 设置的值设置为 Always export。

    小技巧

    当 Kanzi Studio 在 Preview 中显示的项目或任何引用的项目包含您尚未导出到项目的 kzb 文件的更改时,在 Preview 中,Restart 按钮为橙色。

    要查看其内容在 Preview 中已过时的项目,请将鼠标悬停在按钮上。

    ../../_images/preview-content-outdated-tooltip.png
  4. 在工程选项卡栏中,选择您要从中使用预设件或资源的被引用工程。

    ../../_images/stats-project-tab.png
  5. 要让预设件和资源在 Kanzi Studio 中引用工程的下拉菜单中可用,请执行以下任一操作:

    • 在 Prefabs 或 Library 中选择预设或资源,并在 Properties 中添加并将 Visibility Across Projects 属性设置为 Public。

      在 Prefabs 和 Library 中,左上角的绿色图标标记了公共项目。

      ../../_images/stats-visibility-across-projects-public.png ../../_images/stats-marked-public.png ../../_images/white-50-opacity-visibility-across-projects-public.png ../../_images/white-50-opacity-with-public-icon.png

      小技巧

      要直接在 Library 或 Prefabs 中公开项目,请右键单击该项目并选择 Make Public。

      ../../_images/make-public.png
    • 选择 Project > Properties,并在 Properties 中将 Resource Visibility Across Projects 属性设置为 Public。

      当您将项目的 Resource Visibility Across Projects 属性设置为 Public 时,您可以在引用项目的下拉菜单中使用该项目的所有资源。

      Kanzi Studio 在项目选项卡的左上角用绿色标记标记公共项目。

      ../../_images/resources-resource-visibility-across-project-public.png ../../_images/resources-project-tab-public-icon.png

      小技巧

      要直接从工程选项卡中让工程公开,右键点击该工程选项卡并选择 Make Public。

      ../../_images/resources-make-public.png
  6. 使用引用的工程中的内容:

    • 要使用预设件,请在 Node Tree 中要使用该预设件的位置创建 Prefab Placeholder 或 Prefab View 节点,并在 Properties 中将 Prefab Template 属性设置为您在上一步中设为可用的预设件。

      Kanzi Studio 自动将 Prefab Template 属性设置为使用预设的 kzb URL。您可以控制来自引用项目的预设。请参阅 从 Kanzi Studio 项目自定义并控制预设。。

      ../../_images/project-stats.png ../../_images/stats-prefab-template-select-stats.png ../../_images/stats-properties.png
    • 要使用资源,请在 Node Tree 中选择要使用该资源的节点,并在 Properties 中将要使用该资源的属性设置为您在上一步中设为可用的资源。

      Kanzi Studio 自动将属性设置为使用资源的 kzb URL。

      ../../_images/music-artist.png ../../_images/music-properties-foreground-brush.png ../../_images/artist-properties-foreground-brush.png
  7. (可选) 自定义和控制预设的外观。请参阅 从 Kanzi Studio 项目自定义并控制预设。。

编辑被引用工程

您可以在工程选项卡中选择被引用工程来编辑其内容。但是,为了更方便地编辑被引用工程,请在被引用工程之间创建交叉引用。这样您可以在被引用工程中看到主工程的内容,在编辑被引用工程的内容时无需在主工程和被引用工程之间来回切换。

要在主工程的上下文中编辑被引用工程:

  1. 在主工程中:

    1. 从 Node Tree 将 Screen 节点下的根节点拖到 Prefabs。

    2. 在 Prefabs 中选择根节点预设件。在 Properties 中,将 Visibility Across Projects 属性设置为 Public。

    这样您就从根节点创建了一个可在被引用工程中使用的预设件。

    ../../_images/node-tree-prefabs-multiproject-main-project-rootpage-prefab.png ../../_images/properties-rootnode-visibilit-across-projects-public.png
  2. 在工程选项卡中,双击某个子被引用工程的选项卡,以从该工程启动 Preview:

    1. 在 Library 中,右键点击 Project References,创建对主工程的工程引用。

      ../../_images/project-reference-create-existing-project.png
    2. 在 Node Tree 中,删除根节点,按 Alt 并右键单击 Screen 节点,并创建一个 Prefab Placeholder 节点。在 Properties 中:

      • 将 Prefab Template 属性设置为主工程的根节点。

      • 添加并启用 Resources > Disable KZB Export 属性。

        这样,被引用节点的内容就不会导出到工程 kzb 文件中。

      ../../_images/node-tree-stats-prefab-placeholder-root.png ../../_images/properties-prefab-placeholder-root.png

现在,您可以在 Preview 中以主工程为上下文查看被引用工程的内容。这样可以更轻松地编辑被引用工程的内容。

使用 kzb 文件中的预设件和资源

要使用 kzb 文件中的预设件和资源:

  1. 打开或创建一个您要在其中使用 kzb 文件内容的 Kanzi Studio 工程。

  2. 在 Library 中,按 Alt 并右键单击 Project References,选择 Existing .kzb,选择您要在目标工程中使用其内容的 kzb 文件,然后点击 Open。

    如果 kzb 文件引用其他 kzb 文件,则还必须添加对这些 kzb 文件的引用。

    ../../_images/existing-kzb.png
  3. 使用 kzb 文件中的内容:

    • 要使用某个预设件,在 Node Tree 中要使用该预设件的位置创建 Prefab Placeholder 或 Prefab View 节点,在 Properties 中将 Prefab Template 属性设为 <ResourceID>,然后输入您要使用的预设件的 kzb URL。

      ../../_images/project-stats.png ../../_images/stats-properties.png
    • 要使用某个资源,在 Node Tree 中选择要使用该资源的节点,在 Properties 中将要使用该资源的属性设为 <ResourceID>,然后输入您要使用的资源的 kzb 文件 URL。

      ../../_images/music-artist.png ../../_images/music-properties-foreground-brush.png

从 Kanzi Studio 项目自定义并控制预设。

在 Kanzi 解决方案中,当您使用来自某个 Kanzi Studio 工程的预设件时,可以设置这些预设件的内容和外观。具体方法是,在每个预设件的根节点中使用一个属性类型,并将其绑定到您要控制的预设件内容。

要从 Kanzi Studio 项目中控制预设:

  1. 打开或创建一个工程,并向该工程添加来自 Kanzi Studio 工程的预设。请参阅 使用 Kanzi Studio 项目中的预设件和资源。

    自此,该工程被称为目标工程。

  2. 在工程标签栏中,选择包含您要控制的预设件的工程。在 Prefabs 中选择该预设件,然后在 Properties 中您要用于控制该预设件的属性旁边点击 启用编辑。

    Kanzi Studio 从该属性创建一个自定义属性,将其添加到该预设的根节点,并在该预设的根节点中创建一个到该属性的 ##Template 绑定。

    这样您可以从预设件的根编辑预设件的外观。

    例如,如果您要使用名为 Progress 的属性控制音乐播放器的进度条,请点击该属性旁边的 启用编辑。

    自此,该工程被称为源工程。

    ../../_images/music-progress-bar.png ../../_images/music-progress-bar-properties.png
  3. 在 Preview 中,点击 image2 以重新启动 Preview,并导出源工程的 kzb 文件。

  4. 在工程标签栏中选择目标工程,在 Node Tree 中选择您用于实例化来自源工程的、您要控制的预设件的节点。在 Properties 中,添加您在上一步中创建的自定义属性。

    现在,您可以在目标工程中使用该属性,以控制源工程中的预设件。

    ../../_images/music-prefab-placeholder.png ../../_images/music-properties-progress.png

合并引用的 Kanzi Studio 项目的内容。

当您想要引入所引用的 Kanzi Studio 工程中的内容时,可以合并您需要的项。

要合并所引用的 Kanzi Studio 工程中的内容,在 Library > Project References 中右键点击要引入其内容的源工程,然后选择 Merge Project。

使用 Merge Project,您可以只将选定的项导入目标工程。合并时,您可以选择要导入的工程项,并解决两个工程中都存在的项的冲突。Kanzi Studio 会将源工程中的节点合并到一个新的预设件中。即使节点和资源已存在于目标工程中,只要您之前未从同一工程参考合并过它们(这种情况下会标记为相同),Kanzi Studio 也会创建这些节点和资源。请参阅 合并工程。

../../_images/project-reference-merge-project.png

加载多个引用相同被引用工程的工程

Kanzi Studio 不支持在多个 Kanzi Studio 实例中加载同一个工程。在 Library 中,Kanzi Studio 会用红色字体标记已在另一个 Kanzi Studio 实例中加载的工程参考。如果该工程的 kzb 文件存在,Kanzi Studio 的 Preview 会显示该 kzb 文件的内容。如果您卸载某个被引用的工程,Preview 将不显示该工程的内容。

../../_images/project-reference-marked-red.png

当您想将 Kanzi Studio 项目作为项目引用加载到多个 Kanzi Studio 项目中时,请确保将这些项目作为同一个 Kanzi Studio 解决方案的一部分。

例如,如果您有名为 MainProject1 和 MainProject2 的 Kanzi Studio 解决方案,并且它们都包含对 Resources 项目的项目引用:

  1. 创建一个 Kanzi Studio 项目。

  2. 在 Library > Project References 中,为 MainProject1 和 MainProject2 Kanzi Studio 工程创建工程参考。

    ../../_images/create-project-reference-existing.png ../../_images/project-references-in-library.png

您现在可以使用相同的 Kanzi Studio 实例来编辑 MainProject1、MainProject2 和 Resources 项目。

在多个 Kanzi Studio 项目中使用主题和本地化,并将其合并到一个 Kanzi 应用程序中。

要在将多个 Kanzi Studio 项目合并到一个 Kanzi 应用程序中时使用主题和本地化,必须通过以下方式之一使主题组和本地化表对应用程序主项目的 Screen 节点可访问:

  • 在应用程序的主工程中定义主题组和本地化表。

  • 将被引用工程中的主题组和本地化表合并到包含 Screen 节点的主工程中。然后,您可以使用资源 ID 访问被引用工程的主题组和本地化表中的资源。请参阅 合并工程。

  • 请联系 Rightware 支持团队并请求 Kanzi Engine 插件,这些插件使您能够在多个 Kanzi Studio 工程和 kzb 文件中使用主题和本地化。请参阅 提交支持请求。

另请参阅

教程:将 Kanzi Studio 项目合并为一个 Kanzi 应用程序。

导入项目

合并工程

使用节点预设

为您的应用程序设置主题

本地化 (Localization)