Needle Engine 文档
Downloads
  • What is Needle Engine?
  • 用户评价
  • Get an overview

    • Samples and Showcase
    • 我们的愿景 🔮
    • 功能概览
    • 技术概述
  • Resources

    • Pricing and Plans
    • Changelog
    • API Documentation
    • Support & Community
  • Integrations

    • Unity 版 Needle Engine
    • Needle Engine for Blender
    • Needle Engine 作为 Web Component
    • 在您的网站上使用 Needle Engine
    • Needle Cloud
  • Topics

    • Web 项目结构
    • Everywhere Actions
    • Exporting Assets to glTF
    • 框架、打包器、HTML
    • Testing on local devices
    • 部署与优化
  • Advanced

    • 网络
    • VR & AR (WebXR)
    • 使用 Needle Engine 直接从 HTML
    • 编辑器同步
  • Troubleshooting

    • 如何调试
    • 常见问题 (FAQ) 💡
    • Get Help
  • Videos

    • Tutorials on Youtube
    • Interviews on Youtube
  • Scripting Overview

    • 在 Needle Engine 中编写脚本
    • Scripting Introduction for Unity Developers
    • Needle 核心组件
    • Everywhere Actions
  • Components and Lifecycle

    • Creating and using Components
    • @serializable and other decorators
    • 自动生成组件
    • Scripting Examples
    • Community Contributions
    • 附加模块
  • Settings and APIs

    • <needle-engine> 配置
    • needle.config.json
    • Needle Engine API
    • three.js API
Help
Samples
Pricing
  • Needle Website
  • Needle Cloud
  • Support Community
  • Discord Server
  • X/Twitter
  • YouTube
  • Newsletter
  • Email
  • Feedback
  • Github
  • English
  • 简体中文
  • Español
  • Português
  • Français
  • हिन्दी
  • 日本語
  • Deutsch
  • Tiếng Việt
Downloads
  • What is Needle Engine?
  • 用户评价
  • Get an overview

    • Samples and Showcase
    • 我们的愿景 🔮
    • 功能概览
    • 技术概述
  • Resources

    • Pricing and Plans
    • Changelog
    • API Documentation
    • Support & Community
  • Integrations

    • Unity 版 Needle Engine
    • Needle Engine for Blender
    • Needle Engine 作为 Web Component
    • 在您的网站上使用 Needle Engine
    • Needle Cloud
  • Topics

    • Web 项目结构
    • Everywhere Actions
    • Exporting Assets to glTF
    • 框架、打包器、HTML
    • Testing on local devices
    • 部署与优化
  • Advanced

    • 网络
    • VR & AR (WebXR)
    • 使用 Needle Engine 直接从 HTML
    • 编辑器同步
  • Troubleshooting

    • 如何调试
    • 常见问题 (FAQ) 💡
    • Get Help
  • Videos

    • Tutorials on Youtube
    • Interviews on Youtube
  • Scripting Overview

    • 在 Needle Engine 中编写脚本
    • Scripting Introduction for Unity Developers
    • Needle 核心组件
    • Everywhere Actions
  • Components and Lifecycle

    • Creating and using Components
    • @serializable and other decorators
    • 自动生成组件
    • Scripting Examples
    • Community Contributions
    • 附加模块
  • Settings and APIs

    • <needle-engine> 配置
    • needle.config.json
    • Needle Engine API
    • three.js API
Help
Samples
Pricing
  • Needle Website
  • Needle Cloud
  • Support Community
  • Discord Server
  • X/Twitter
  • YouTube
  • Newsletter
  • Email
  • Feedback
  • Github
  • English
  • 简体中文
  • Español
  • Português
  • Français
  • हिन्दी
  • 日本語
  • Deutsch
  • Tiếng Việt
  • Getting Started

    • Downloads
    • Needle Engine for Unity
    • Needle Engine for Blender
    • Needle Engine as Web Component
    • Needle Engine on your Website
    • Needle Cloud
    • Custom integrations
    • Support and Community
  • Core Concepts

    • Web 项目结构
    • Everywhere Actions
    • Exporting Assets to glTF
    • 框架、打包器、HTML
    • Testing on local devices
    • 部署与优化
    • 如何调试
    • 常见问题 (FAQ) 💡
  • Scripting

    • 在 Needle Engine 中编写脚本
    • Scripting Introduction for Unity Developers
    • Creating and using Components
    • 自动生成组件
    • Scripting Examples
    • Community Contributions
  • Advanced

    • VR & AR (WebXR)
    • 网络
    • 编辑器同步
  • Reference

    • 功能概览
    • 技术概述
    • Needle 核心组件
    • needle.config.json
    • <needle-engine> 配置
    • @serializable and other decorators

什么是 Everywhere Actions?

Needle 的 Everywhere Actions 是一组精心挑选的组件,可让您在 Unity 中创建交互式体验,而无需编写一行代码。它们旨在作为跨 Web、移动和 XR(包括 iOS 上的增强现实)体验的构建块。

从低级别的触发器和操作,可以构建更高级复杂的交互行为。

支持的平台

  • 桌面
  • 移动 (Android / iOS)
  • VR 眼镜
  • AR 设备
  • iOS AR – QuickLook(是的,真的!)

如何使用 Everywhere Actions?

对于 iOS 支持,请将 USDZExporter 组件添加到您的场景中。最好将其添加到与 WebXR 组件相同的对象上(但不是强制性的)

要向场景中的任何对象添加操作 选中它,然后点击 Add Component > Needle > Everywhere Actions > [Action]。

Everywhere Actions 列表

ActionDescriptionExample Use Cases
Play Animation on Click播放 Animator 中选定的动画状态。播放后,可以选择转换到另一个动画。产品演示、互动教程、角色移动
Change Material on Click将一种材质替换为其他材质。所有使用该材质的对象将一起切换。产品配置器、角色
Look At使对象看向摄像机。UI 元素、精灵、信息图、billboard 特效、可点击热点
Play Audio on Click播放选定的音频片段。音效、旁白、博物馆展览
Hide on Start在场景启动时隐藏对象,以便稍后显示。
Set Active on Click显示或隐藏对象。
Change Transform on Click移动、旋转或缩放对象。允许绝对或相对移动。角色、产品、UI 动画(对于更复杂的移动使用动画)
Audio Source在启动时播放音频并持续循环。空间或非空间背景音乐、环境音
WebXR Image Tracking跟踪图像目标并显示或隐藏对象。AR 体验、产品演示

示例

乐器

演示空间音频、动画和交互。

简单角色控制器

演示组合动画、看向和移动。

图像跟踪

演示如何将 3D 内容附加到自定义图像标记上。在 AR 中启动下面的场景,并将手机摄像头对准屏幕上的图像标记,或将其打印出来。

Image Marker

下载示例图像标记

**在 Android 上:**请在 Chrome Flags 中打开“WebXR Incubations”。您可以通过在 Android 手机的 Chrome 浏览器地址栏中粘贴 chrome://flags/#webxr-incubations 来找到它们。

交互式构建块概述

创建您自己的 Everywhere Actions

创建新的 Everywhere Actions 涉及到用 TypeScript 编写您的动作代码,这些代码将在浏览器和 WebXR 中使用,并使用我们的 TriggerBuilder 和 ActionBuilder API 为通过 QuickLook 在 iOS 上实现的增强现实创建匹配的设置。创建自定义动作时,请记住 QuickLook 可用的功能集是有限的。您仍然可以在浏览器和 WebXR 中使用您想要的任何代码,但 QuickLook 的行为可能需要从可用触发器和操作中构建一个近似值。

提示

通常,构建特定行为需要跳出思维定势,创造性地应用可用的低级动作。一个例子是“点击放置”动作——QuickLook 中没有光线投射或碰撞检测可用,但您可以用许多不可见的对象覆盖预期的放置区域,并使用“点击”触发器将要放置的对象移动到被点击的不可见对象的位置。

QuickLook 的触发器和操作基于 Apple 的 Preliminary Interactive USD Schemas

代码示例

以下是 HideOnStart 的实现示例,展示了如何创建同时支持浏览器和 QuickLook 的 Everywhere Action:

import { Behaviour, UsdzBehaviour, BehaviorModel, TriggerBuilder, ActionBuilder, BehaviorExtension, USDObject, USDZExporterContext } from "@needle-tools/engine";

export class HideOnStart extends Behaviour implements UsdzBehaviour {

    start() {
        this.gameObject.visible = false;
    }

    createBehaviours(ext: BehaviorExtension, model: USDObject, _context: USDZExporterContext) {
        if (model.uuid === this.gameObject.uuid)
            ext.addBehavior(new BehaviorModel("HideOnStart_" + this.gameObject.name,
                TriggerBuilder.sceneStartTrigger(),
                ActionBuilder.fadeAction(model, 0, false)
            ));
    }

    beforeCreateDocument() {
        this.gameObject.visible = true;
    }

    afterCreateDocument() {
        this.gameObject.visible = false;
    }
}

提示

通常,获得正确的行为将涉及从可用的_低级动作_组合_更高级别的动作_。例如,我们的“点击更改材质”动作由多个 fadeActions 组成,并在内部复制具有不同材质集的对象。通过精心构建这些动作,可以实现复杂的行为。

构建您自己动作的低级方法

Triggers
TriggerBuilder.sceneStartTrigger
TriggerBuilder.tapTrigger
Actions
ActionBuilder.fadeAction
ActionBuilder.startAnimationAction
ActionBuilder.waitAction
ActionBuilder.lookAtCameraAction
ActionBuilder.emphasize
ActionBuilder.transformAction
ActionBuilder.playAudioAction
Group Actions
ActionBuilder.sequence
ActionBuilder.parallel
GroupAction.addAction
GroupAction.makeParallel
GroupAction.makeSequence
GroupAction.makeLooping
GroupAction.makeRepeat

要查看我们内置的 Everywhere Actions 的实现,请查看 src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts。

延伸阅读

以下页面提供更多您可以立即测试和探索的示例:

  • 访问我们的 AR Showcase Website,其中有许多交互式 AR 示例,重点关注 iOS AR 和 Quicklook
  • Needle Engine Everywhere Action Samples

页面由 AI 自动翻译

Suggest changes
最近更新:: 2025/4/22 08:44
Prev
Web 项目结构
Next
Exporting Assets to glTF