我正在开发一个HoloLens-Application,它从内部存储器加载资源。目前我只能访问仿真器而不是设备。
try
{
//for unity: replaced with string path = @"C:\Users\root\Desktop\cube";
string path = Path.Combine(Application.persistentDataPath, "cube.unity3d");
if (File.Exists(path))
{
//Using the example code
myLoadedAssetBundle = AssetBundle.LoadFromFile(path);
if (myLoadedAssetBundle == null)
{
Debug.Log("Failed to load AssetBundle!");
return;
}
var prefab = myLoadedAssetBundle.LoadAsset<GameObject>("cube");
Instantiate(prefab);
myLoadedAssetBundle.Unload(false);
}
else
{
//do nothing
}
}
catch (Exception ex)
{
//never reached during all tests
Debug.Log(ex.Message);
}
当我按下统一播放按钮时,会显示立方体,但是当我在HoloLens仿真器中运行程序时,它就不起作用了。该文件存在,但myLoadedAssetBundle始终为null。在Unity中我使用了桌面路径,当在hololens上运行时,我使用了代码中的路径。 可以访问所有文件。即使以下工作也很好:
//called after creating the string path
File.WriteAllText(path + ".txt", "This is a test");
我不知道可能是什么问题。该文件始终在路径中(我将其上传到FileExplorer中)并找到了它。我桌面上的文件与模拟器中上传的文件完全相同。
它是否有可能在HoloLens上运行而在模拟器上运行?
更新
现在我也在具有相同问题的真实HoloLens上尝试过它。我正在使用Unity 2017.1.0f3
答案 0 :(得分:1)
我也挣扎了一段时间。
我发现它与资产包的导出方式有关。例子往往显示这个 -
BuildPipeline.BuildAssetBundles(assetBundleDirectory, buildMap, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
但是为了在HoloLens中工作,他们需要像这样出口 -
BuildPipeline.BuildAssetBundles(assetBundleDirectory, buildMap, BuildAssetBundleOptions.None, BuildTarget.WSAPlayer);