工程 (Projects)¶
Kanzi 应用程序使用 kzb Kanzi 文件作为应用程序内容和事件逻辑的来源。
您可以使用一个或多个 Kanzi Studio 项目来创建您的 Kanzi 应用程序。
请参阅 将 Kanzi Studio 项目合并到 Kanzi 应用程序中。。
您可以通过选择 Project > Properties 在 Kanzi Studio 中配置您的项目。
在 Kanzi Studio 中,您一次只能打开一个项目。
Kanzi Studio 项目结构¶
您的 Kanzi Studio 项目由项目对象和资源组成。项目中的每个对象都有一个父对象、一个名称和一组定义它的属性。此外,大多数对象都有子对象或项目对象。
除了父链接和子集合中的子链接之外,项目树中的项还可以引用其他分支。例如,动画对象将动画库作为其父级,但具有作为其子节点的动画引用列表。这允许动画实例化,其中多个动画节点可以在其子节点列表中共享一个子节点。
工程目录¶
默认情况下,Kanzi Studio 工程存储在 <KanziWorkspace>/Projects 目录中。Kanzi Studio 为每个工程创建一个目录,其中包含:
工程文件。Kanzi Studio 将工程数据存储在 kzm 文件中。根工程文件的扩展名为
.proj.kzm。虽然您可以手动修改工程文件,但这些文件设计为仅由 Kanzi Studio 修改。一个工程目录只能包含一个根工程文件。如果工程目录包含多个根工程文件,Kanzi Studio 无法打开该工程,因为它无法判断哪个是根工程文件。请将每个工程移到各自独立的目录中。
工程文件备份。您保存工程时,Kanzi Studio 会复制一份工程文件,并将其存储在扩展名为
.proj.kzm_N的文件中,其中 N 是备份的连续编号。项目文件锁。当您打开一个项目时,Kanzi Studio 会在项目目录中创建一个锁文件。项目锁文件可防止打开多个项目副本。当您关闭项目时,Kanzi Studio 会删除项目锁文件。
资源文件目录。这些目录包含组成 Kanzi Studio 工程的文件,但其内容不包含在工程文件中。例如,其中包括图像文件和着色器源文件。
您可以在 Kanzi Studio 的 Library > Resource Files 中访问资源文件目录的大部分内容。当您在文件系统中向这些目录中的任何一个目录添加文件时,该文件会自动添加到 Library,但下列情况例外:
Mesh Data 和 Animations 目录仅由 Kanzi Studio 使用。这些目录中的文件包含网格的顶点和索引数据以及动画的关键帧数据。如果您使用源代码控制系统,请记得在 Kanzi Studio 项目中导入网格或创建新动画时,将这些文件添加到源代码控制中。
Source Assets 目录是用于存储本地文件的存储位置,您可以在其中存储图像处理应用程序和数字内容创建工具,以便它们与项目一起保留。Kanzi Studio 不处理这些文件,也不会将它们导出到您的 Kanzi 应用程序的 kzb 文件中。您无法从 Kanzi Studio 访问 Source Assets 目录。
Restore Points 目录。使用还原点返回到项目的早期版本。当您为项目创建还原点时,Kanzi Studio 会将项目的完整副本放入
<ProjectName>/Restore Points目录中的时间戳目录中。请参阅 创建还原点。
在何处存储被参考的工程¶
一个工程目录只属于一个工程。不要将工程存储在包含另一个工程的工程文件的目录中。而应将解决方案所参考的工程与该解决方案并列存放。请参阅 将 Kanzi Studio 项目合并到 Kanzi 应用程序中。。
Kanzi Studio 会强制执行此规则:
您无法在位于另一个工程目录内的目录中创建工程。
当工程存储在另一个工程的目录内时,您无法将其添加为参考。
当您打开的工程通过工程参考(直接或通过一系列参考)访问到此类工程时,Kanzi Studio 会通过 Move nested referenced projects 对话框询问是否将其移出到同级目录。如果您拒绝,Kanzi Studio 将不会打开该工程。
当您添加为参考的工程在其自身目录中包含另一个工程时,Kanzi Studio 会针对该另一个工程询问同样的问题。如果您拒绝,Kanzi Studio 会保持您已打开的工程,仅使您添加的工程处于未加载状态。
移动操作的作用¶
移动操作会更改磁盘上的目录,且无法撤销。当目标位置已存在同名目录时,Kanzi Studio 会在其创建的目录名称后附加一个数字。
Kanzi Studio 会删除移动后变空的目录。
Kanzi Studio 要么移动所有目录,要么一个都不移动。当移动失败时(例如因为另一个程序打开了某个文件),Kanzi Studio 会重试,然后询问是否再次尝试。如果您拒绝,Kanzi Studio 会将已经移动的目录移回原处。只有在每个目录都就位之后,它才会更新工程中的路径,因此未能完成的移动不会改动您的工程文件。当 Kanzi Studio 也无法将某个目录移回原处时,它会在 Log 窗口中报告这一情况,该目录则保留在移动后所在的位置。
Kanzi Studio 会将整组嵌套工程展平为单一层级。例如,您打开
Main,它参考Main/Sub中的工程,而该工程又参考Main/Sub/Deep中的工程。这两个工程都会移到Main旁边,而不是各自原来所在目录的旁边。当包含嵌套工程的目录没有可供移入的父目录时(例如该目录是驱动器根目录),Kanzi Studio 会将这些工程保留在原处,并向日志写入一条警告。
如果您打开的工程本身就存储在它所引用的某个工程的目录中,Kanzi Studio 会保留这一处嵌套不变,并向日志写入一条警告。它仍会移动找到的其他所有嵌套工程。当该工程正在被打开时,您打开的工程及其所在的目录都无法移动,因此请自行将该工程移出该目录。
Kanzi Studio 更新的内容以及需要您更新的内容¶
Kanzi Studio 会在其访问到的每个工程中,更新所有指向已移动目录的路径设置:
工程参考和 kzb 参考。
Kanzi Engine 插件路径。
Binary Export Directory、Application Export Directory 和 Preview Working Directory 设置。
Application Root Directory 和 APK Path 构建配置设置。
Kanzi Studio 插件添加的任何路径属性。
Kanzi Studio 不会更改值为宏(例如 <ProjectDirectory>)的路径设置,以使该设置在每台计算机上都能继续解析。当此类设置指向被移动的目录时,请自行更新。
Kanzi Studio 会保存其更新了路径的每个工程,但包含未保存更改的工程除外。对于此类工程,Kanzi Studio 会更新其路径但不保存,以免替您保存您的更改,并向 Log 窗口写入一条说明。请保存该工程以保留更新后的路径。
已移动工程的应用程序代码无需更改,因为 Kanzi Studio 将整个工程目录作为一个整体移动。请自行更新从外部指向该目录的路径:构建脚本、持续集成配置以及版本控制路径。
Kanzi Studio 不移动任何内容的情况¶
在以下情况下,Kanzi Studio 不会移动任何内容:
它所涉及的某个工程已在另一个 Kanzi Studio 实例中打开。
它所涉及的某个工程文件为只读。请先从版本控制中签出该文件。
它所涉及的某个工程仍为 kzproj 格式,并且您拒绝将其转换为 kzm。Kanzi Studio 会保存其路径已更新的每个工程,而保存 kzproj 工程会转换该工程并删除原始 kzproj 文件。
需要移动的某个工程已加载到您打开的工程中。Kanzi Studio 无法移动其正保持打开的工程的目录。请卸载该工程,或者关闭您打开的工程后再重新打开。
当您打开工程时,Kanzi Studio 会取消打开操作。当您添加工程参考时,Kanzi Studio 会保留您打开的工程,仅使您添加的工程保持未加载状态。
使用 KanziStudio.exe /Script 运行的命令脚本会直接移动目录而不进行询问,因为该对话框需要交互式的 Kanzi Studio。请参阅 自动化 Kanzi Studio 任务。