unity的Ready Player Me的QuickStart的加载服务器的glb模型,修改ThirdPersonLoader脚本改成下载到StreamingAssets文件夹然后加载,使其还是能正常运行
时间: 2024-06-11 16:04:33 浏览: 16
1. 打开Unity编辑器,创建一个新场景。
2. 将Ready Player Me的QuickStart中的ThirdPersonLoader预制体拖拽到场景中。
3. 在Hierarchy面板中选中ThirdPersonLoader对象,然后在Inspector面板中找到ThirdPersonLoader(Script)组件。
4. 将ThirdPersonLoader(Script)组件中的LoadFromWeb变量的值改为false。
5. 在Assets文件夹下创建一个名为StreamingAssets的文件夹。
6. 打开ThirdPersonLoader.cs脚本,找到LoadGLBFromWeb()函数。
7. 将函数中的下载地址改为一个本地的.glb文件的路径,例如:Application.streamingAssetsPath + "/myModel.glb"。
8. 将函数中的WWW()方法改为UnityWebRequest.Get()方法。
9. 将函数中的yield return www改为yield return request.SendWebRequest()。
10. 将函数中的www.bytes改为request.downloadHandler.data。
11. 保存脚本。
12. 在Unity编辑器中点击运行按钮,等待场景加载完成。
13. 现在应该能够看到模型已经成功加载到场景中了。
相关问题
unity的Ready Player Me的QuickStart的加载服务器的glb模型,修改RPM Player预制体上的脚本改成下载到StreamingAssets文件夹然后加载,使其还是能正常运行
1. 将glb模型放到StreamingAssets文件夹中。
2. 打开RPM Player预制体,找到RPMPlayer.cs脚本。
3. 在RPMPlayer.cs脚本中,找到LoadAvatar()函数。
4. 将LoadAvatar()函数中的以下代码:
using (UnityWebRequest uwr = UnityWebRequest.Get(avatarURL))
{
yield return uwr.SendWebRequest();
if (uwr.result == UnityWebRequest.Result.Success)
{
byte[] bytes = uwr.downloadHandler.data;
avatar = GLTFSceneImporter.LoadFromBytes(bytes);
}
}
修改为:
string path = Application.streamingAssetsPath + "/avatar.glb";
UnityWebRequest uwr = UnityWebRequest.Get(path);
yield return uwr.SendWebRequest();
if (uwr.result == UnityWebRequest.Result.Success)
{
byte[] bytes = uwr.downloadHandler.data;
avatar = GLTFSceneImporter.LoadFromBytes(bytes);
}
5. 保存RPMPlayer.cs脚本,回到Unity编辑器界面。
6. 将RPM Player预制体拖到场景中,运行游戏,可以看到Avatar正常加载。
说明:以上修改后,RPM Player预制体将从StreamingAssets文件夹中加载glb模型,而不是从服务器上下载。
修改Ready Player Me Avatar Loader的官方unity的场景QuickStart,修改RPM Player预制体改成把模型下载到本地StreamingAssets,再加载出来
1. 首先,在Unity中打开Ready Player Me Avatar Loader的官方QuickStart场景。
2. 找到Hierarchy中的RPM Player预制体,并将其拖放到场景视图中。
3. 创建一个新的空GameObject并将其命名为“AvatarLoader”。
4. 将“AvatarLoader”对象拖放到Hierarchy中,并将其放置在RPM Player的旁边。
5. 在Inspector中,添加一个新的C#脚本,并将其命名为“AvatarLoaderScript”。
6. 打开“AvatarLoaderScript”,并添加以下代码:
```csharp
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class AvatarLoaderScript : MonoBehaviour
{
string avatarUrl = "https://api.readyplayer.me/avatar/random";
void Start()
{
StartCoroutine(LoadAvatar());
}
IEnumerator LoadAvatar()
{
UnityWebRequest www = UnityWebRequest.Get(avatarUrl);
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
Debug.Log(www.error);
}
else
{
byte[] bytes = www.downloadHandler.data;
string path = Application.streamingAssetsPath + "/avatar.glb";
// 保存模型到本地StreamingAssets文件夹
System.IO.File.WriteAllBytes(path, bytes);
// 加载本地模型
GameObject avatar = new GameObject();
var assetBundleCreateRequest = AssetBundle.LoadFromFileAsync(path);
yield return assetBundleCreateRequest;
var assetBundle = assetBundleCreateRequest.assetBundle;
var assetLoadRequest = assetBundle.LoadAssetAsync<GameObject>("Avatar");
yield return assetLoadRequest;
avatar = Instantiate(assetLoadRequest.asset as GameObject);
avatar.transform.position = new Vector3(0, 0, 0);
}
}
}
```
7. 在“AvatarLoaderScript”的Inspector中,将“avatarUrl”变量更改为Ready Player Me API的随机头像URL。
8. 点击运行按钮,等待Unity加载场景和脚本。
9. 在Play模式下,Unity将下载模型并将其保存到本地StreamingAssets文件夹中。
10. 完成后,Unity将加载本地模型并在场景中显示它。
11. 确保在Unity中停止运行后,将本地模型文件删除,以便进行下一次测试。
注意:在使用这种方法时,需要注意模型文件的大小和下载速度。如果模型文件很大,下载时间可能会很长,这可能会影响用户的体验。