首页 > 解决方案 > 为 Unity+UWP 添加广泛的文件系统访问功能

问题描述

我正在尝试将命名的功能添加到使用 Unity构建且没有 XAML 标记broadFileSystemAccess的 UWP 应用程序中。文档说要将以下内容添加到应用程序清单中,但统一/视觉工作室项目中不存在应用程序清单。这个功能在 MRP 上是不可能的,还是我们做错了什么?

这是应该添加到您的应用程序包清单中的内容,但就像我提到的那样,我们没有其中之一。

<?xml version="1.0" encoding="utf-8"?>
<Package
    ...
    xmlns:uap4="http://schemas.microsoft.com/appx/manifest/uap/windows10/4">
...
<Capabilities>
    <uap4:CustomCapability Name="CompanyName.customCapabilityName_PublisherID"/>
</Capabilities>
</Package>

标签: xamlunity3duwphololens

解决方案


您可以按如下方式添加功能:PlayerSettingsWSA 功能

如果某个功能不在列表中,您必须使用 IL2CPP 构建您的项目,以便输出名为的应用程序包清单Package.appxmanifest并自行修改 XML。

为了让事情变得神奇

您可以编写一个具有PostProcessBuildAttribute如下属性的方法:Unity - Scripting API: PostProcessBuildAttribute将验证并添加 XML 标记(如果它不存在于 Package.appxmanifest.

您也可以像这样创建自定义构建:Unity - Manual: Build Player Pipeline并添加相同的逻辑来验证和添加功能(一个 XML 标记)

伪代码:

using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;

public class MyBuildPostprocessor {
    [PostProcessBuildAttribute(1)]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) {
         XmlDocument xmlDoc = new XmlDocument();
         xmlDoc.Load($"{pathToBuiltProject}/{PROJECT NAME HERE}/Package.appxmanifest");
         // Find if the `broadFileSystemAccess` capability exists
         // add `broadFileSystemAccess` capability
    }
}

推荐阅读