Needle Engine 项目结构
Needle Engine 深度集成了 Unity 和 Blender 等 3D 软件,同时又具备现代 Web 开发的全部灵活性。因此,使用 Needle 创建的项目通常由两部分组成:一个编辑器项目和一个Web 项目。我们将根据您使用的编辑器,通常将编辑器项目称为“Unity 项目”或“Blender 项目”。
flowchart TD
A[**编辑器项目**<br>Unity 或 Blender,<br>集成 Needle] -->|导出 3D 内容到| B[**Web 项目**<br>使用 Needle Engine,<br>HTML、CSS、JS]
B -->|运行于| C[**Web 浏览器**]
编辑器项目和 Web 项目
编辑器项目是您创建 3D 场景、向对象添加组件、添加材质和灯光、设置环境、制作动画等的地方。您可以使用 3D 软件的所有强大工具来创建将导出到 Web 的内容。如果您正在使用 Unity 或 Blender,您将需要安装 Needle Engine for Unity 包或 Needle Engine for Blender 插件。
Web 项目是您的 Web 应用程序的最终形态。它包含导出的 3D 资产、控制应用程序行为的脚本以及定义外观的 HTML 和 CSS。Web 项目由 Needle Engine 提供支持,Needle Engine 负责加载和显示您的 3D 内容、管理脚本组件及其生命周期,并利用 Web 平台的功能,如 WebXR、音频、网络等。
创建 Web 项目
默认情况下,Web 项目由 Needle 创建和管理,这意味着您无需担心如何设置包、添加依赖项或构建——您可以专注于创建内容。Unity 和 Blender 的集成使得直接从编辑器创建 Web 项目变得容易。
:::: tabs @tab Unity
在场景中找到 Needle Engine 组件或添加它,然后点击 生成项目。这将在您指定的文件夹中创建一个新的 Web 项目。

@tab Blender
找到“场景”面板和“Needle Engine”部分,然后点击 生成 Web 项目。这将在您指定的文件夹中创建一个新的 Web 项目。

@tab 从命令行
打开终端并运行命令 npx create needle
来创建一个新的 Needle Engine Web 项目。该命令将提示您输入项目名称、框架和其他设置。您还可以指定项目应创建在哪个文件夹中。
:::tip 首先安装 Node.js 确保您的系统已安装 Node.js。 您可以通过在终端中运行 node -v
来检查是否已安装。 如果未安装,请从 Node.js 网站 下载并安装。 :::
% npm create needle
> create-needle
create-needle version 0.1.1-alpha
┌ 欢迎使用 Needle Engine!🌵
│
◇ 我们应该在哪里创建您的项目?
│ my-project
│
◇ 您想使用哪个框架?
│ 带有 Vite 的 HTML、CSS、JavaScript
│
└ 您的项目已准备就绪!
下一步:
1: cd my-project
2: npm install (或 npm i)
3: npm start (或 npm run dev)
4: 连接集成(Unity, Blender, ...)
::::
::: tip 自带项目 Needle Engine 非常灵活。您可以修改现有 Web 项目或使用自己的项目。这允许您集成到现有项目中,使用不同的构建系统,或使用不同的框架,如 React、Vue 或 Angular。 :::
在代码编辑器中打开 Web 项目
我们推荐 Visual Studio Code 作为代码编辑器,因为它对通用 Web 开发,特别是 TypeScript 有很好的支持。当您生成 Web 项目时,我们会自动创建一个 .code-workspace
文件,您可以在 Visual Studio Code 中打开它。此文件包含工作区的配置,包括要包含的文件夹和编辑器的设置。
::: tabs @tab Unity
点击 Needle Engine 组件上的 打开代码编辑器。这将在 Visual Studio Code 中打开 Web 项目,包含所有文件夹和文件。

@tab Blender
点击 场景 > Needle Engine 面板上的 打开代码编辑器。这将在 Visual Studio Code 中打开 Web 项目,包含所有文件夹和文件。

@tab 在 Explorer 或 Finder 中查找
双击 .code-workspace
文件。这将在 Visual Studio Code 中打开 Web 项目,包含所有文件夹和文件。如果您愿意,当然也可以在其他代码编辑器中打开 Web 项目文件夹。

:::
理解 Web 项目中的文件和文件夹
默认的 Web 项目基于遵循现代 Web 开发实践的标准结构。它使用出色的 Vite 作为开发环境、打包器和构建工具。以下部分描述了典型 Needle Engine Web 项目的结构。
:::tip 您最常交互的地方是 src/scripts/
和 build/
。 将您自己的组件添加到 src/scripts/
。您用 TypeScript 编写它们。
当构建您的 Web 项目时,无论是通过点击编辑器中的“构建”还是运行 npm run build
,最终文件都会放置在 dist/
文件夹中。这个文件夹就是您可以上传到 Web 服务器来托管您的 Web 应用程序的文件夹。 :::
:::: file-tree name="Web 项目文件"
::: file index.html 您的 Web 项目的起始页。您可以在此处添加额外的 HTML、样式表或脚本导入。自定义 Needle 组件应放在 src/scripts/
文件夹中。
您还可以在此处找到 <needle-engine>
Web 组件,它显示您的 3D 内容。您可以修改其属性以更改环境、加载样式、接触阴影等。有关可用属性的列表,请参阅 Web 组件属性参考。
:::
::: file assets/ 资产文件夹包含由集成导出的 3D 和其他文件。这包括 .glb
文件、音频或视频文件。该文件夹由集成管理,因此如果您想添加其他资产,请将其放入 include/
中。 :::
::: file assets/MyScene.glb 从 Unity 或 Blender 导出的 3D 场景会自动放置在此处。文件名取决于您的 Unity 或 Blender 场景的命名方式。此文件夹中可能有更多文件,具体取决于您的项目设置方式。例如,如果您有多个场景,或者使用音频或视频文件,它们也会在这里。 :::
::: file src/ 您的 Web 项目的源代码。您在这里编写脚本、样式和构成您的 Web 应用程序的其他代码。Needle 在这里放置了一些生成的文件,您也可以添加自己的代码。 :::
::: file src/main.ts 此脚本包含在 index.html
中并在启动时运行。它导入 @needle-tools/engine
并加载主引擎代码。您可以在此处为 Needle Engine 添加插件。 :::
::: file src/scripts/ 在此文件夹中添加您的自定义脚本。我们的 组件编译器 将自动从它们生成用于 Unity 和 Blender 的存根组件。 :::
::: file src/scripts/MyComponent.ts 一个自定义脚本示例,它将被编译为 Unity C# 组件或 Blender 面板。您可以在此处添加自己的脚本,它们将自动被组件编译器识别。 :::
::: file src/styles/ 样式文件夹包含您的 Web 项目的样式表。您可以在此处添加其他样式表并在 index.html
中导入它们。 :::
::: file src/styles/main.css 您的 Web 项目的默认样式表。在此处添加您自己的样式,或在 src/styles/
文件夹中创建其他样式表。您可以在 index.html
中导入它们。 :::
::: file src/generated/ 此文件夹中的文件由 Needle 集成生成和管理。请勿手动编辑它们——它们将在导出时被覆盖。 :::
::: file src/generated/gen.js 此文件是生成的。它告诉 <needle-engine>
Web 组件最初要加载哪个文件。 :::
::: file src/generated/meta.json 此文件是生成的。它包含有关项目的元数据,例如主场景的名称、使用的 Needle Engine 版本以及其他信息。 :::
::: file src/generated/register_types.ts 此文件是生成的。它会自动导入您的项目使用的自定义组件,包括来自您的代码和依赖包的组件。 :::
::: file include/ 如果您有想要在运行时加载的自定义资产,请将它们添加到 include 文件夹。构建时,此文件夹将被复制到输出文件夹。 :::
::: file dist/ 构建的 Web 项目放置的输出文件夹。这是生成最终 Web 应用程序的地方。它包含打包和最小化的文件,可供发布到服务器。 :::
::: file needle.config.json Needle 配置。Needle 集成和构建工具使用此文件。它包含有关导出资产到何处以及构建文件夹在哪里的信息。 :::
::: file vite.config.js vite 配置。在此处进行构建分发和托管开发服务器的设置。通常,您不需要更改此文件,但如果需要,可以添加其他插件或修改构建过程。 :::
::: file package.json 包含名称、版本、依赖项和开发脚本的项目配置。您可以在此处添加额外的 npm 包作为依赖项。 :::
::: file tsconfig.json 这是 Typescript 编译器配置。它告诉 TypeScript 我们正在使用现代脚本功能。 :::
::: file .gitignore 此文件指定 git 版本控制系统应忽略的文件和文件夹。默认的 Web 项目排除 /dist
、node_modules
和 .vite
文件夹。如果您使用 git 以外的其他版本控制系统,则应排除这些文件夹。 :::
::::
我们的导出器也可以与其他项目结构一起使用。我们选择 Vite 作为打包器是因为它的速度和灵活性。您可以随意设置自己的项目结构,或使用不同的打包器,如 Webpack。Needle Engine 旨在灵活且通常可以根据您的需求进行调整。了解有关打包和其他框架的更多信息。
扩展 Web 项目
Web 项目使用行业标准结构:
Node.js 和 npm 用于包管理和构建脚本
TypeScript 用于脚本
Vite 用于运行开发服务器和构建生产版本
您可以通过添加自己的脚本、样式和资产来扩展 Web 项目。您可以根据需要向项目添加额外的 npm 包,并且可以通过修改 vite.config.js
文件来自定义构建过程。对于某些自定义,例如为您的应用程序添加 PWA 支持,Needle 已经提供了帮助程序使其更容易。通常,您可以根据自己的意愿自由修改 Web 项目,这使得 Needle Engine 与其他要求您使用其特定项目结构的引擎不同。
:::tip 将附加文件复制到输出文件夹 您可以向项目添加附加文件,这些文件在构建时会复制到输出文件夹。您可以将它们放入 include/
文件夹中,或在 needle.config.json
文件中配置复制。 :::
为您的 Web 项目添加 HTML 界面
您的 Needle Engine 项目不限于 3D 内容。您可以使用 HTML 和 CSS 创建 2D 用户界面,并将其与您的 3D 场景连接起来。这允许您创建结合 3D 和 2D 元素的丰富、交互式 Web 应用程序。
如果您的 HTML 和 CSS 变得更复杂,您可能需要使用 前端框架,如 Svelte、React 或 Vue。Needle Engine 旨在与这些框架良好协作,我们提供了如何集成它们的示例和文档。有关更多信息,请参阅我们的 前端框架示例。
以下是一些帮助您开始使用 Needle Engine 中的 2D UI 的资源:
Needle Engine 提供了一个配置文件 (needle.config.json
),允许您自定义构建过程、添加额外资产以及配置 Web 项目的构建方式。
不使用集成而使用编辑器
Unity 和 Blender 集成不是使用 Needle Engine 的必要条件。换句话说,Web 项目不依赖于编辑器项目——它只使用导出的 3D 资产。如果您更喜欢使用不同的编辑器或手动创建 3D 资产,您可以这样做。以 glTF 或 GLB 格式导出您的 3D 资产,并将它们添加到您的 Web 项目中。
将集成与现有 Web 项目一起使用
如果您已经有一个想要与 Needle Engine 集成的 Web 项目,您可以按照以下步骤操作:
安装适用于 Unity 或 Blender 的 Needle Engine 包。
设置您的场景
告诉集成您的 Web 项目位于何处。
配置导出的文件应放置在 Web 项目的哪个位置。这在
needle.config.json
文件中完成。使用 Needle Engine 的 API 在您的 Web 项目中加载导出的资产。
继续阅读
页面由 AI 自动翻译
Last updated