You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:非资源本地图片的路径访问方案问询

在Flutter中提供可被Unity直接访问的图片路径

针对你嵌入Unity后需要传递可直接访问的图片路径的场景,以下是几种可靠的解决方案:

跨平台通用方案:将Flutter Assets图片复制到可访问路径

这是最省心的跨平台实现方式,步骤如下:

  1. 先在pubspec.yaml中正常声明你的图片资源:
flutter:
  assets:
    - assets/images/your_target_image.png
  1. 借助path_provider包把Assets里的图片复制到应用私有文件目录(该目录拥有可直接读取的绝对路径),代码示例:
import 'package:path_provider/path_provider.dart';
import 'package:flutter/services.dart';
import 'dart:io';

Future<String> getUnityAccessibleImagePath() async {
  final docDir = await getApplicationDocumentsDirectory();
  final targetFilePath = '${docDir.path}/your_target_image.png';
  final targetFile = File(targetFilePath);

  // 仅当目标文件不存在时执行复制,避免重复操作
  if (!await targetFile.exists()) {
    final assetBytes = await rootBundle.load('assets/images/your_target_image.png');
    await targetFile.writeAsBytes(
      assetBytes.buffer.asUint8List(
        assetBytes.offsetInBytes,
        assetBytes.lengthInBytes
      )
    );
  }

  return targetFilePath;
}
  1. 调用上述方法拿到路径后,通过你已有的Flutter-Unity通信通道将路径传递给Unity即可。

原生平台单独配置方案

Android端

  • 将图片放入Android项目的app/src/main/assets目录(若不存在该目录则自行创建)
  • 可沿用上述跨平台的复制逻辑,也可以通过原生代码直接读取Assets文件并写入可访问目录,再将路径回传给Flutter后转发给Unity。

iOS端

  • 在Xcode中将图片添加到项目的Resources目录(添加时勾选"Copy items if needed"选项)
  • 后续同样通过复制到Documents目录的方式获取可被Unity读取的绝对路径。

权限注意事项

  • Android:若使用应用私有目录(如Documents),无需额外权限;若涉及外部存储,则需申请READ_EXTERNAL_STORAGE权限。
  • iOS:访问应用私有目录无需额外权限,若涉及外部存储,需在Info.plist中添加对应的权限描述字段。

内容的提问来源于stack exchange,提问作者Wouter Vandenputte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:55:42