【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (下篇)
自从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
下面奉上我的最终代码:
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using System.IO;
- using System.Text;
- using System;
- #if NETFX_CORE //UWP下编译
- using Windows.Storage;
- #endif
- /// <summary>
- /// 数据控制类
- /// </summary>
- public class DataBase : MonoBehaviour
- {
- // Use this for initialization
- void Start()
- {
- ReadData();
- }
- // Update is called once per frame
- #if NETFX_CORE //UWP下
- private void ReadData()
- {
- StorageFolder docLib = KnownFolders.DocumentsLibrary;
- var docFile = docLib.OpenStreamForReadAsync("Data\\data.bin");
- docFile.Wait();
- var fs = docFile.Result;
- //成功取出fs,后续操作自己玩
- fs.Dispose();
- }
- #else //Unity下
- private void ReadData()
- {
- string strDataPath = "C:\\Users\\YXY\\Documents\\Data\\data.bin";
- Stream fs = new FileStream(strDataPath, FileMode.Open, FileAccess.Read);
- //成功取出fs,后续操作自己玩
- fs.Dispose();
- }
- #endif
- }
这次的路径是:文档\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 时的本地文件读取 (下篇)的更多相关文章
- 【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (上篇)
Universal Windows Platform(UWP)是微软Windows10专用的通用应用平台,其目的在于在统一操作系统下控制所有智能电子设备. 自从Unity 5.2之后,配合VS 201 ...
- win10 uwp 保存用户选择文件夹
如果我们每次把临时处理的文件保存,都要让用户选择一次,用户会不会觉得uwp垃圾?如果我们每次打开应用,都从某个文件读取,而这个文件不在应用目录和已知的目录,那么每次都需要用户选择,用户会不会觉得uwp ...
- 本地文件读取(csv,txt)时字符编码问题解决
今天进行csv文件读取时,老是入库为空,因为其中有中文字符,我要通过中文字符映射成相应的编号(上升:1011,下降:1012),于是怎么也取不到编号.刚开始以为程序映射出了问题,最后日志打出来后,发现 ...
- win10 uwp 获取指定的文件 AQS
很多时候不需要获取整个文件夹的文件,是需要获取文件夹里指定的文件. 那么 UWP 如何对文件夹里的文件进行过滤,只拿出自己需要的文件? 本文:如何使用通配符或文件匹配方式在uwp获取文件夹中指定的文件 ...
- 使用git pull文件时和本地文件冲突怎么办?
同事在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes to 'c/environ.c' would be overwritten ...
- 使用git pull文件时和本地文件冲突怎么办
在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息:error: Your local changes to 'c/environ.c' would be overwritten by ...
- git pull文件时和本地文件冲突的问题
在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes to 'c/environ.c' would be overwritten b ...
- git pull文件时和本地文件冲突 方法之一
1.先将本地修改存储起来 2.pull内容 3.还原暂存的内容 4.解决文件中冲突的的部分 打开 dsa.txt 文件手动解决冲突. 其中Updated upstream 和=====之间的内容就是p ...
- Win10 UWP应用发布流程
简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...
随机推荐
- Linux命令(七)查找文件或目录 find
find 命令可以根据给定的路劲和表达式查找指定的文件或目录.find 参数选项很多,并且支持正则表达式,功能强大. 和管道结合使用可以实现复杂的功能,是系统管理和普通用户必须掌握的命令. 一.fin ...
- Oracle 标准版 企业版 个人版的区别 转帖
转帖来源: https://blog.csdn.net/flg_inwind/article/details/2628133 同事方总:http://www.oracle.com/us/corpora ...
- python 十进制整数转换为任意进制(36以内)
def baseN(num, b): return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0" ...
- Bootstrap-table学习笔记
| 引入CSS文件 <link rel="stylesheet" href="bootstrap.min.css"> <link rel=&q ...
- Hello 2018 A,B,C,D
A. Modular Exponentiation time limit per test 1 second memory limit per test 256 megabytes input sta ...
- MySQL中使用Like模糊查询太慢
问题:明明建立了索引,为何Like模糊查询速度还是特别慢? Like是否使用索引? 1.like %keyword 索引失效,使用全表扫描.但可以通过翻转函数+like前模糊查询+建立翻转函数索 ...
- HGOI 20181028 题解
HGOI 20181028(复赛备考) /* 真是暴力的一天,最后一题MLE?由于数组开得太大了!!! 270滚粗 考场上好像智商高了很多?!(假的) */ sol:暴力求解,然后没有数据范围吐槽一下 ...
- 【转】汽车CAN总线
概述 CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而 ...
- HTTP ERROR 400 Bad Request
一springmvc项目中我新增记录完全ok,编辑就是不行,后台方法进不去.老是报错HTTP ERROR 400 Bad Request. 经过查询,说是400表示请求中的语法错误. 我把新增记录的请 ...
- 三、spring boot 1.5.4 web容器定制(端口号等修改)
spring boot 默认采用tomcat作为嵌入的web容器 定制方式有三种 1. 2.如下 @Component public class CustomizationBean implement ...