如何加载资产
XRMOD引擎允许创作者通过CSharp脚本或可视化脚本加载自定义资产。
但是,我们应该如何做到这一点?
你必须安装Unity Engine和Dev-environment。
首先,我们需要创建一个XRMOD项目(如何创建)。
如何在创建后找到XRMOD项目? 点击这里了解更多信息
收集资产
创意者可以导入自己的艺术资产或使用Unity内置资产(Primitive Objects)。
点击这里,了解Unity如何导入资产。
跟随步骤:
- 将你的艺术资产导入
你的项目/Artwork
文件夹中。 - 创建一个新的文件夹并将其命名为
Prefabs
。这个文件夹将用来存储项目的预制体。 - 将艺术资产拖放至Unity Scene或Hierarchy
- 处理你的艺术资产,例如,模型的渲染、贴图、比例等。
- 将你的艺术资产从Unity Scene或Hierarch拖放至
你的项目/Artwork/Prefabs
文件夹,它将成为一个Prefab - 将你的艺术作品的预制件拖放至 PackageToolsEditor->Contents
编辑脚本
进入PROJECT_PATH
->PROJECT_NAME
->Scripts
->Runtime
并打开PROJECTNAMEMainEntry.cs
文件(通过双击)。
然后在OnLoad
方法上写一些代码。
ARMODAPI.LoadAssetAsync("VirtualObject");对象名称(VirtualObject
)必须与PackageToolsEditor
->Contents`资产名称相同。
using System;
using UnityEngine;
using System.Collections;
using com.Phantoms.ARMODAPI.Runtime;
using com.Phantoms.ActionNotification.Runtime;
using Object = UnityEngine.Object;
namespace HowToCreateProject.Runtime
{
public class HowToCreateProjectMainEntry
{
//XRMOD API
internal static API ARMODAPI = new API(nameof(HowToCreateProject));
public async void OnLoad()
{
var tmp_ARVirtualObjectPrefab = await ARMODAPI.LoadAssetAsync<GameObject>("VirtualObject");
Object.Instantiate(tmp_ARVirtualObjectPrefab);
}
}
}
我们使用LoadAssetAsync
来按资产名称和类型从XR-Experience包中加载我们的虚拟对象。因为LoadAssetAsync
方法将资产从磁盘加载到内存,它并没有将资产实例化,所以我们需要调用Instantiate
方法来实例化它。
可编程块
- 转到PackageToolsEditor
- 切换到Properties部分
- 将你的鼠标指向自由区域
- 右击你的鼠标按钮
- 选择
Programmable
建立XR-体验
- 转到PackageToolsEditor
- 切换到Build部分
- 选择你需要构建的平台
- 点击Build AR-Experience按钮,开始构建
Build Platform和Platform Group所选的两个平台必须是相同的。
测试
现在我们已经完成了所有的工作,但我们还不知道内容是否正常加载,所以我们需要进一步测试以验证我们的结果。
如何测试?
XRMOD引擎目前提供了在Unity编辑器中加载测试等流程,所以我们可以在Unity编辑器中验证所有的逻辑。在开始测试之前,我们需要通过Unity Package Manager安装XRMOD Engine Simulator插件。
点击这里来学习如何安装XRMOD引擎工具链。
在这里,我们需要安装XRMOD引擎模拟器插件。
当你完成安装后,你可以在Unity编辑器的左上角看到一个XR按钮,这主要是用来启动XRMOD引擎模拟器的。
启动模拟器
- 点击左上方的XR Play按钮,启动XRMOD引擎模拟器。
- 切换到Game视图
- 将你的项目名称输入模拟器
- 点击Fetch Project来加载我们的项目
总结
在这一节中,我们学习了如何在XRMOD引擎中加载一个资产。在加载过程中,我们需要注意以下几点。
- 通过
ARMODAPI.LoadAssetAsync
方法加载资产。 ARMODAPI.LoadAssetAsync
需要传入要加载的类型和要加载的项目名称。ARMODAPI.LoadAssetAsync
是一个异步方法,需要在函数中标记为异步,并在ARMODAPI.LoadAssetAsync
方法前添加await
。- 在API中加载的对象的名称必须与
PackageToolsEditor
->Contents
中的资产名称相同。