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


    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.  
      }


    这次的路径是:文档Datadata.bin。对应传统路径:C:UsersYXYDocumentsDatadata.bin。

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

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

    要点:

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

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

     

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

  • 相关阅读:
    fs.readdirSync
    symbol
    vuex-count
    webpack2.0
    关于vuex报错
    store
    .NET MVC 验证码
    SQLServer 加密
    IE10、IE11下SCRIPT5009: “__doPostBack”未定义
    Sql Server 增加字段、修改字段、修改类型、修改默认值
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/9254597.html
Copyright © 2020-2023  润新知