Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备。

自从Unity 5.2之后,配合VS 2015和Windows 10 SDK就能够将Unity工程发布为UWP APP。可是这当中仍有数不清的雷区,比如文件读取。

上篇是UWP文件读取的铺垫,本篇是具体的Unity转UWP的文件读取

在Unity中:

①Unity没有Windows.Storage命名空间,所以这绝对是个坑。

②Unity的C#版本只有4.0,不支持诞生于4.5的async/await异步机制,所以StorageFile 中的各种异步方法全部不能用。

虽说发布成UWP,但是在UWP下运行时,依然会受到Unity的诸多限制。

当然网上有方法在Unity中使用异步机制:http://blog.csdn.net/u013628121/article/details/52964063

但是我并没有成功,最终在这篇文章中得到了灵感,即采用非异步的方式:http://blog.csdn.net/u012741077/article/details/52167614

下面奉上我的最终代码:

  1.  
    using System.Collections;
  2.  
    using System.Collections.Generic;
  3.  
    using UnityEngine;
  4.  
    using System.IO;
  5.  
    using System.Text;
  6.  
    using System;
  7.  
    #if NETFX_CORE //UWP下编译
  8.  
    using Windows.Storage;
  9.  
    #endif
  10.  
    /// <summary>
  11.  
    /// 数据控制类
  12.  
    /// </summary>
  13.  
    public class DataBase : MonoBehaviour
  14.  
    {
  15.  
    // Use this for initialization
  16.  
    void Start()
  17.  
    {
  18.  
    ReadData();
  19.  
    }
  20.  
    // Update is called once per frame
  21.  
     
  22.  
    #if NETFX_CORE //UWP下
  23.  
    private void ReadData()
  24.  
    {
  25.  
    StorageFolder docLib = KnownFolders.DocumentsLibrary;
  26.  
    var docFile = docLib.OpenStreamForReadAsync("Data\\data.bin");
  27.  
    docFile.Wait();
  28.  
    var fs = docFile.Result;
  29.  
    //成功取出fs,后续操作自己玩
  30.  
    fs.Dispose();
  31.  
    }
  32.  
    #else //Unity下
  33.  
     
  34.  
    private void ReadData()
  35.  
    {
  36.  
    string strDataPath = "C:\\Users\\YXY\\Documents\\Data\\data.bin";
  37.  
    Stream fs = new FileStream(strDataPath, FileMode.Open, FileAccess.Read);
  38.  
    //成功取出fs,后续操作自己玩
  39.  
    fs.Dispose();
  40.  
    }
  41.  
    #endif
  42.  
    }

这次的路径是:文档\Data\data.bin。对应传统路径:C:\Users\YXY\Documents\Data\data.bin。

上篇已经教过大家读取byte数据了,所以这里不再赘述,大家可以把byte转换成各种继续使用。

总而言之,只要不用异步方法取出流 fs,剩下的都好办了。

要点:

①FileStream的初始化在UWP中因为读写权限问题无法实现,但是可以用其父类Stream进行曲线救国。

②Stream在UWP中没有close方法,只有Dispose方法,据说没有办法保存文件,所以本篇只读不写。

原文链接:https://blog.csdn.net/xxxhhhyxy/article/details/72871607

【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (下篇)的更多相关文章

  1. 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (上篇)

    Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备. 自从Unity 5.2之后,配合VS 201 ...

  2. win10 uwp 保存用户选择文件夹

    如果我们每次把临时处理的文件保存,都要让用户选择一次,用户会不会觉得uwp垃圾?如果我们每次打开应用,都从某个文件读取,而这个文件不在应用目录和已知的目录,那么每次都需要用户选择,用户会不会觉得uwp ...

  3. 本地文件读取(csv,txt)时字符编码问题解决

    今天进行csv文件读取时,老是入库为空,因为其中有中文字符,我要通过中文字符映射成相应的编号(上升:1011,下降:1012),于是怎么也取不到编号.刚开始以为程序映射出了问题,最后日志打出来后,发现 ...

  4. win10 uwp 获取指定的文件 AQS

    很多时候不需要获取整个文件夹的文件,是需要获取文件夹里指定的文件. 那么 UWP 如何对文件夹里的文件进行过滤,只拿出自己需要的文件? 本文:如何使用通配符或文件匹配方式在uwp获取文件夹中指定的文件 ...

  5. 使用git pull文件时和本地文件冲突怎么办?

    同事在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes to 'c/environ.c' would be overwritten ...

  6. 使用git pull文件时和本地文件冲突怎么办

    在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息:error: Your local changes to 'c/environ.c' would be overwritten by ...

  7. git pull文件时和本地文件冲突的问题

    在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes to 'c/environ.c' would be overwritten b ...

  8. git pull文件时和本地文件冲突 方法之一

    1.先将本地修改存储起来 2.pull内容 3.还原暂存的内容 4.解决文件中冲突的的部分 打开 dsa.txt 文件手动解决冲突. 其中Updated upstream 和=====之间的内容就是p ...

  9. Win10 UWP应用发布流程

    简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...

随机推荐

  1. bootstrap响应式布局列子

    <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8&q ...

  2. python 按照固定长度分割字符串

    >>> import re >>> string = '123456789abcdefg' >>> re.findall(r'.{3}', str ...

  3. 洛谷P2114 [NOI2014]起床困难综合症

    P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...

  4. IDEA 调试技巧

    转载:http://blog.csdn.net/victor_cindy1/article/details/52336983 1.这里以一个web工程为例,点击图中按钮开始运行web工程. 2.设置断 ...

  5. 分布式为什么使用Redis

    一 为什么使用 Redis 在项目中使用 Redis,主要考虑两个角度:性能和并发.如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Redis. 性能: 如 ...

  6. 牛客网-湘潭大学校赛重现H题 (线段树 染色问题)

    链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网 n个桶按顺序排列,我们用1~n给桶标号.有两种操作: 1 l r c 区间[l,r]中的每个桶中 ...

  7. Tyvj1038 忠诚 (线段树)

    [Tyvj1038]忠诚 线段树   题目描述 老管家是一个聪明能干的人.他为财主工作了整整10年,财主为了让自已账目更加清楚.要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意.但是 ...

  8. Django_博客_XSS 攻击防范

    背景: 博客项目中用户后台添加文章时,若通过富文本编辑器输入 标签内容或者 js 指令会导致文章排版错乱,甚至进行XSS攻击 攻击现象: 文本内容输入 js 指令 文章描述时正确显示其文本内容 但在打 ...

  9. GDOI2018 Day1 题目总结

    T1:农场 题意:有一个长为 $n$ 的序列 $a$,要求将其分成尽可能多的部分,使得每一部分的 $a_i$ 的和相等.求最多能分成的部分数. $30\%:1\le n\le 1000$ $80\%: ...

  10. HDU 4315 阶梯博弈变形

    n个棋子,其中第k个是红色的,每个棋子只能往上爬,而且不能越过.重叠其他棋子,谁将红色棋子移到顶部谁赢. 由于只能往上爬,所以很像阶梯博弈.这题有2个限制,棋子不能重叠,有红棋存在 首先不考虑红色棋, ...