Hololens2でKnownFolders.DocumentsLibraryを扱おうとしたら「index out of range of ToggleList: 0」エラーが出た
現象
Hololens2のエミュレータの段階で、タイトルのようなエラーがでました
再現コード
string UWP_DIR_NAME = "myDir";
string FILE_NAME = "obj_info.json";
string jsonString = "{\"objs\":{\"x\":100,\"y\":200,\"z\":300}";
await Task.Run(async () =>
{
try
{
var readFolder = await KnownFolders.DocumentsLibrary.GetFolderAsync(UWP_DIR_NAME);
var readFile = await readFolder.GetFileAsync(FILE_NAME);
using (var stream = await readFile.OpenStreamForReadAsync())
{
var bytes = new byte[stream.Length];
await stream.ReadAsync(bytes, 0, bytes.Length);
var text = System.Text.Encoding.UTF8.GetString(bytes);
jsonString = text;
}
}
catch (Exception e)
{
var folder = await KnownFolders.DocumentsLibrary.CreateFolderAsync(UWP_DIR_NAME, CreationCollisionOption.OpenIfExists);
var file = await folder.CreateFileAsync(FILE_NAME, CreationCollisionOption.ReplaceExisting);
using (var stream = await file.OpenStreamForWriteAsync())
{
var bytes = System.Text.Encoding.UTF8.GetBytes(jsonString);
await stream.WriteAsync(bytes, 0, bytes.Length);
}
}
});
あるフォルダ内のファイルを見に行って、なければダミーのjsonファイルを作るというもの
実際のコードではないけど、var多いし、もっときれいに書きたいやつです
発生したエラー
catchのほうでもエラーが出てしまってこの後の処理がうまく通っていなかった
エラー内容は「index out of range of ToggleList: 0」
エラー箇所はそのあとたくさんDebug.Log
を使ってvar readFolder = await KnownFolders.DocumentsLibrary.GetFolderAsync(UWP_DIR_NAME);
らへんだと判明
ちなみにエミュレータでDebug.Logを見る方法
参考:https://zenn.dev/fumiyahr/articles/a97842e3954560
いちいちダウンロードがめんどうですが、できました
環境
- Unity: v2019.4.18f1
- MRTK: v10.0.19041
- Hololens2エミュレータ: v10.0.20348
- Visual Studio 2019
解決した方法
参考
* https://docs.microsoft.com/en-us/uwp/api/windows.storage.knownfolders?view=winrt-20348
* https://www.fixes.pub/program/379935.html
* https://www.fixes.pub/program/270850.html
* https://qiita.com/miyaura/items/75ec7f3d6ab0500ccf72
* https://blog.kaorun55.com/entry/2017/03/04/203152
エミュレータでの簡単な手順
- Unity上でUWP向けにビルド
-
Package.appxmanifest
をテキストエディタなどで開き、<uap:Capability Name="documentsLibrary" />
を追加 - VisualStudioでエミュレータのプロジェクトを開いて
Package.appxmanifest
を探して開き、宣言追加 - エミュレータ実行
実機での簡単な手順
-
Package.appxmanifest
をテキストエディタなどで開き、<uap:Capability Name="documentsLibrary" />
を追加 - VisualStudioでエミュレータのプロジェクトを開いて
Package.appxmanifest
を探して開き、宣言追加 - Unity内でMRTKのビルド
Author And Source
この問題について(Hololens2でKnownFolders.DocumentsLibraryを扱おうとしたら「index out of range of ToggleList: 0」エラーが出た), 我々は、より多くの情報をここで見つけました https://qiita.com/ono-honeycomb/items/1ff41d88b62cc0071e4f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .