从一个场景重定向到另一个 Unity 3D 脚本
Redirect from one scene to another Unity 3D script
我有 2 个场景,我想在单击按钮时从一个场景重定向到另一个场景。为此,我使用了 AssetBundle。
下面是导出资产的代码:
public class ExportAssetBundles
{
[MenuItem("Assets/Build AssetBundle")]
static void ExportResource()
{
string folderName = "AssetBundles";
string filePath = Path.Combine(Application.streamingAssetsPath, folderName);
BuildPipeline.BuildAssetBundles(filePath, BuildAssetBundleOptions.None, BuildTarget.NoTarget);
}
}
这里是加载代码:
public class RedirectToMenu : MonoBehaviour {
void Start () {
Button btn = GetComponent<Button>);
btn.onClick.AddListener(OnClick);
}
public void OnClick(){
Debug.Log("You have clicked the button!");
LoadAsset("MenuFinal");
}
IEnumerator LoadAsset(string assetBundleName)//, string objectNameToLoad)
{
string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "AssetBundles");
filePath = System.IO.Path.Combine(filePath, assetBundleName);
var assetBundleCreateRequest = AssetBundle.LoadFromFileAsync(filePath);
yield return assetBundleCreateRequest;
AssetBundle asseBundle = assetBundleCreateRequest.assetBundle;
}
}
所以当我 运行 我在 Unity 中的场景时,我在控制台中收到这样的错误:
ArgumentException: The output path "D:/userdata/Documents/Scene1/Assets/StreamingAssets\AssetBundles" doesn't exist(at ExportAssetBundles.ExportResource () (at Assets/ExportAssetBundles.cs:16)
我已将我的场景放入 Assets 文件夹:
此外,我已将它们添加到构建设置中:
那么我该如何修复这个错误并使重定向工作呢?是代码问题还是某些文件位置问题?
使用SceneManager.LoadScene()
public static void LoadScene(int sceneBuildIndex,
SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
public static void LoadScene(string sceneName,
SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
你要求的路径是
"D:/userdata/Documents/Scene1/Assets/StreamingAssets\AssetBundles"
但你的真实路径是
"D:/userdata/Documents/Scene1/Assets/StreamingAssets\AssetBundle" <- no 's'
我有 2 个场景,我想在单击按钮时从一个场景重定向到另一个场景。为此,我使用了 AssetBundle。 下面是导出资产的代码:
public class ExportAssetBundles
{
[MenuItem("Assets/Build AssetBundle")]
static void ExportResource()
{
string folderName = "AssetBundles";
string filePath = Path.Combine(Application.streamingAssetsPath, folderName);
BuildPipeline.BuildAssetBundles(filePath, BuildAssetBundleOptions.None, BuildTarget.NoTarget);
}
}
这里是加载代码:
public class RedirectToMenu : MonoBehaviour {
void Start () {
Button btn = GetComponent<Button>);
btn.onClick.AddListener(OnClick);
}
public void OnClick(){
Debug.Log("You have clicked the button!");
LoadAsset("MenuFinal");
}
IEnumerator LoadAsset(string assetBundleName)//, string objectNameToLoad)
{
string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "AssetBundles");
filePath = System.IO.Path.Combine(filePath, assetBundleName);
var assetBundleCreateRequest = AssetBundle.LoadFromFileAsync(filePath);
yield return assetBundleCreateRequest;
AssetBundle asseBundle = assetBundleCreateRequest.assetBundle;
}
}
所以当我 运行 我在 Unity 中的场景时,我在控制台中收到这样的错误:
ArgumentException: The output path "D:/userdata/Documents/Scene1/Assets/StreamingAssets\AssetBundles" doesn't exist(at ExportAssetBundles.ExportResource () (at Assets/ExportAssetBundles.cs:16)
我已将我的场景放入 Assets 文件夹:
此外,我已将它们添加到构建设置中:
那么我该如何修复这个错误并使重定向工作呢?是代码问题还是某些文件位置问题?
使用SceneManager.LoadScene()
public static void LoadScene(int sceneBuildIndex,
SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
public static void LoadScene(string sceneName,
SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
你要求的路径是
"D:/userdata/Documents/Scene1/Assets/StreamingAssets\AssetBundles"
但你的真实路径是
"D:/userdata/Documents/Scene1/Assets/StreamingAssets\AssetBundle" <- no 's'