Skip to content
QiuHanWen edited this page Mar 21, 2024 · 16 revisions

简介

本SDK可以导出2种Item:场景(Scene)或模型(Model),通过 Item Manager窗口的 Type枚举可切换类型。每种Item里面都可包含 资源文件(Assets),后面会详细介绍。用户一次只能加载一个场景Item,但可额外加载多个模型Item。

Item Type Content
Scene Scene,Assets
Model Assets

场景Item

场景Item包含主场景及 资源文件,可以通过这类Item为用户提供各种奇特的环境。以海洋Item为例,主场景为广阔的海洋,资源文件为替代桌面图标的物体(如船、宝箱)、装饰物体(如鸭子)、及背景动态物体(如基于Flocking算法运动的海鸥及鱼群)等:

image

注意:

  • 此类Item中的 资源文件通常与其场景有较强的关联性(如仅存在海洋中的漂浮物),或使用了自定义的代码组件。如果 资源文件为通用素材,建议挪到单独的模型Item中打包,以便更多场景能够使用到。

模型Item

模型Item仅包含 资源文件,通常为同一系列资源的合集(如建筑模块、环境特效、交通工具),这些资源可供用户在不同场景中使用。以低多边形建筑模块Item为例,该Item基于Unity商店中的免费资源包Low Poly Buildings - Full Pack制作,提供了搭建城市所需的建筑、道路、载具等模块:

image

创建及编辑场景Item的主场景

如果Item的类型是场景,则需要为其添加一个主场景才能正常打包。点击 Item Manager窗口的 Create Scene按钮,会弹出来一个标题为 Select Template...的场景模板窗口,这里提供了常用的Item模板场景,在左侧选中符合的一项然后点击 Create按键,一个新的 Entry.unity场景文件及相关资源将会被克隆并存储在 [Item根目录]/Scenes目录下。

image

一旦主场景创建完成,你可以点击 Item Manager窗口的 Edit Scene来重新打开它。 在Hierarchy窗口,你可以看到以下两个场景:

image

Entry 场景

该场景为Item的主场景,包含了环境布置以及各种逻辑代码。

image

游戏对象及组件

该场景可能包含以下游戏对象,其中带 [必要]标识代表该游戏对象必须包含在该场景中(或组件必须附着在游戏对象中), 带 [可选]标识代表可选项,应用已经提供默认实现,仅当开发者认为需要提供重载实现或打算公开给用户修改时才自行添加:

AliveDesktop [必要]:该场景的主控制器。它有以下组件:

  • AD_AliveDesktop [必要]: 标记该物体为AliveDesktop单例。

ShellController [必要]:Shell Item的控制器。它有以下组件:

  • AD_DefaultShellController (或IAD_ShellController的子类) [必要]: 自定义ShellItem的生成规则(如生成区域、生成间隔)。

DecorationController [必要]:Decoration Item的控制器。它有以下组件:

  • AD_DefaultDecorationController (或IAD_DecorationController的子类) [必要]: 自定义DecorationItem的生成规则(如生成区域、生成间隔)。

EnvironmentController [可选]:管理环境设置。它有以下组件:

  • AD_DefaultEnvironmentController (或IAD_EnvironmentController的子类) [必要]: 自定义环境设置(如灯光、天空盒或反射等)。

PostProcessingController [可选]: 管理后期特效(PostProcessing)设置。它有以下组件:

  • AD_DefaultPostProcessingController (或IAD_PostProcessingController的子类) [必要]: 自定义PostProcessing设置。

XRController [可选]: 管理XR设置。它有以下组件:

  • AD_DefaultXRController (或IAD_XRController的子类) [必要]: 自定义初始传送点、XR移动模式及缓存上次离开时的位置信息等。

PD Group [可选]: 如果想为用户提供可配置/存储的数据(如上述的PostProcessing配置文件),你需要在该物体下增加带指定PersistentData组件的子物体,且对每个组件指定唯一Key:

image

AliveDesktopHub_Simulator场景

该场景模拟了运行时环境,因此你不需要打包Item也可以测试部分功能:

image

注意:

  • 如果找不到该场景,你可以点击菜单的 Alive Desktop/Add Simulator Scene按钮叠加打开该场景。
  • 该场景资源默认存储在只读的Pacakge文件夹下,你需要先在 PacakgeManager窗口导入或更新相关的 Simulator资源才能正常打开。
  • 模拟器支持PC/VR模式运行,可通过顶部菜单 Alive Desktop/Set Platform Mode切换。
  • 在PC模式运行时,由XRI的XR Device Simulator模块模拟VR操控,可展开左下角的 XR Device SimulatorUI查看操作提示:

image

下面对该场景中较为重要的游戏对象进行介绍,如果觉得无聊可以跳过这一段:

SystemManager Group (处理系统数据及事件)

  • SystemAudioManager: 进行系统音频采样,主要用于音频可视化。该物体有一个 AudioSource组件,可以设置不同的音频源进行调试。如果你想在运行时播放/暂停音频,可以单击Hierarchy窗口中该物体右侧的ToggleUI进行切换。

SettingManager Group (处理用户设置)

  • CommonSettingManager: 管理程序的通用设置。当程序运行后,如果你更改了 AD_CommonSettingManagerSimulator组件的相关字段,那么程序将会发送对应的事件。
  • ModManager Group (处理程序数据及事件)
  • EnvironmentManager: 管理环境设置。
  • PostProcessingManager: 管理PostProcessing设置。
  • SceneManager: 管理场景变换。
  • XRManager: 管理XR设置及状态。
  • InputManager: 管理各种输入源。
  • ShellManager: 管理Shell控制器。
  • DecorationManager: 管理Decoration控制器。

AssistantManager

该物体组主要提供调试功能,相关配置信息存储在 Assets/Resources/Threeyes/SteamworksEditorSetting.asset文件中:

image

生成及管理资源文件

资源文件主要由各种素材构成,如Prefab、模型、贴图、音频等。

壳/装饰物体

有两类物体比较特殊,他们主要提供给用户编辑使用:

  • 壳物体(Shell Item):此类物体用于替代桌面图标(如文件、文件夹、快捷方式),能够以文本、贴图等形式呈现对应图标的信息。如下图,该帆船模型代替了桌面的 此电脑图标,船名对应图标的名称,船帆图案对应图标的预览图,用户可以进入编辑模式修改其内容:

image

  • 装饰物体(Decoration Item):此类物体不与桌面图标绑定,用户可在运行时添加/删除/编辑它们以便丰富场景内容。如下图,场景中的座椅、电视机和时钟等都是用户在运行时摆放的装饰物体:

image

按照是否能互动,也可以把它们细分为:

  • 静态(Static)物体:仅提供基础的装饰功能,不可交互。如墙壁模块、树木等都可作为静态物体;
  • 可交互(Interactable)物体:可接受玩家的输入信息(抓取、开关、驾驶等),或与环境物体进行互动(如被Socket吸取)。如下图的玩具车,用户可以驾驶该物体,也可以附着在其指定位置:

image

壳/装饰物体本质为Prefab,通过AD_SOXXXPrefabInfo类型的ScriptableObject文件保存其名称、预览图等信息:

image

多个AD_SOXXXPrefabInfo可以整合到一个AD_SOXXXPrefabInfoGroupo类型的ScriptableObject文件中。

image

它们的关系如下:

flowchart LR;
    AD_SOXXXPrefabInfoGroup-->AD_SOXXXPrefabInfo1-->Prefab1;
    AD_SOXXXPrefabInfoGroup-->AD_SOXXXPrefabInfo2-->Prefab2;
Loading

注意:

  • 程序运行时会扫描Item导出包的所有AD_SOXXXPrefabInfoGroupo类型的资源,从而列出对应的壳/装饰物体。

【Todo:介绍如何通过资源创建对应的资源文件】 -通过脑图展示App读取PrefabInfo的流程 -创建PrefabInfo(通过菜单创建) -创建PrefabInfoGroup(可以手动拖拽,或者针对指定文件夹一键初始化)

物体摆放规则:

  • 根物体的锚点需要在物体的底部,局部X/Y/Z轴分别对应物体的右/上/前方:

image

【Todo:说明构建资源文件的规则】

Adavance

【增加XR自定义组件的使用】(提示用户查看SDK或ModUploader以便更好的了解使用方法): -RigAttach -XRHinge等 -XRGrabXXX -XRSocket

Clone this wiki locally