博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Unity_UWP】Unity 工程发布win10 UWP 时的本地文件读取 (下篇)
阅读量:6942 次
发布时间:2019-06-27

本文共 1663 字,大约阅读时间需要 5 分钟。

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

你可能感兴趣的文章
bzoj 1798: [Ahoi2009]Seq 维护序列seq 线段树 区间乘法区间加法 区间求和
查看>>
[ACM] POJ 3061 Subsequence (仿真足)
查看>>
[LeetCode]Maximum Product Subarray
查看>>
thinkphp 读取页面报错 说 /Runtime/Cache/Home/XXXXXX.php 错误
查看>>
第三届开源操作系统年度技术年会 --- 资料下载
查看>>
揭秘Windows10 UWP中的httpclient接口[2]
查看>>
Cookie的使用
查看>>
Jenkins和maven自动化构建java程序
查看>>
读取系统执行状态的shell脚本
查看>>
arcgis 10.1 导入数据到oracle 发布地图服务
查看>>
高吞吐高并发Java NIO服务的架构(NIO架构及应用之一)
查看>>
znujljhzolktftcc
查看>>
高流量站点NGINX与PHP-fpm配置优化
查看>>
eclipse中改变默认的workspace的方法及说明
查看>>
一个基于MVVM的TableView组件化实现方案
查看>>
教你区分LVDS屏线及屏接口定义
查看>>
C函数tolower,与toupper
查看>>
c 进程间的通信
查看>>
【张宴】PHP在金山游戏运营中的应用
查看>>
tomcat发布静态网页
查看>>