# UnitySimpleFileBrowser: a save and load dialog inside your Unity game

> Unity Simple File Browser is a uGUI plugin that shows a Windows-style file chooser during gameplay, with search, quick links, multi-select, folder picking and a recycled list view, and it handles Android runtime permissions and the Storage Access Framework on modern Android. It suits a Unity developer who needs a save or load dialog that does not break the game.

**yasirkula/UnitySimpleFileBrowser** — A uGUI based runtime file browser for Unity 3D (draggable and resizable)

- Repository: https://github.com/yasirkula/UnitySimpleFileBrowser
- Stars: 1,005 · Forks: 137
- Language: C#
- License: MIT
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/yasirkula-unitysimplefilebrowser

## What the plugin does

Unity Simple File Browser is a uGUI based runtime file browser for Unity 3D, and the package description says it helps you show save and load dialogs during gameplay with its uGUI based file browser. The point of building the dialog from uGUI rather than using the operating system's own file chooser is that an OS dialog is a separate window, which on desktop would take focus away from the game. The primary language is C#, the licence is MIT, the last push was on 2026-09-24, and the releases are v1.7.8 on 2026-09-24, v1.7.7 on 2026-05-10 and v1.7.6 on 2026-04-24. It is also on the Unity Asset Store, and the README carries links to a forum thread, a Discord server and a sponsors page, so the support route is the usual combination of a thread and a chat.

## The feature list, and the recycled list view

The features describe a file chooser rather than a browser for arbitrary hierarchies. It behaves similar to a Windows file chooser, with the ability to search by name or filter by type, quick links, and a simple user interface. The window is draggable and resizable, it can choose folders instead of files, it supports selecting multiple files and folders, and it can easily be reskinned. It supports runtime permissions on Android M and later and the Storage Access Framework on Android Q and later. One implementation detail is worth calling out because it explains the performance characteristics, that it is optimized using a recycled list view, which makes Instantiate calls sparingly. In a uGUI list of a few hundred files, instantiating a prefab per row is the usual cause of a hitch, and recycling rows is the standard fix. The note also says UWP and WebGL platforms are not supported, which narrows where you can ship it.

## Five ways to install it

The installation section lists five routes, which is a sign of how the plugin is distributed across the different ways Unity projects are set up. You can import the `SimpleFileBrowser.unitypackage` from the releases via Assets and Import Package. You can clone or download the repository and move the `Plugins` folder into your Unity project's `Assets` folder. You can import it from the Asset Store. Via the Package Manager, you click the + button and install from the git URL `https://github.com/yasirkula/UnitySimpleFileBrowser.git`. And via OpenUPM, after installing openupm-cli, you run:

```bash
openupm add com.yasirkula.simplefilebrowser
``` The package manifest at the root names the package `com.yasirkula.simplefilebrowser`, with the display name Simple File Browser and the version 1.7.8, and the repository root carries the `Plugins/` folder alongside the package files and a `LICENSE.txt.meta`.

## The API, and the two dialog shapes

You call one of two static functions depending on the mode. `ShowSaveDialog` and `ShowLoadDialog` share the same shape, taking an `OnSuccess` callback, an `OnCancel` callback, a `PickMode`, a flag for multi-selection, an optional initial path, an initial filename, a title and a button label. The difference is what the result means. In load mode the returned paths always lead to existing files or folders, and in save mode they can point to non-existing files. The `PickMode` can be `Files`, `Folders` or `FilesAndFolders`, and setting `allowMultiSelection` to true allows picking several. There can only be one dialog active at a time, so these functions return true if the dialog was shown successfully and false if another was already open, and the `FileBrowser.IsOpen` property tells you whether one is active at a given moment. If the user presses Cancel the `onCancel` callback runs, otherwise `onSuccess` runs with the selected paths. There are also coroutine variants that yield while the dialog is open.

## The Android Storage Access Framework problem

This is the part of the documentation you should read before you ship on Android, and it is a genuine platform limitation rather than a plugin limitation. On Android Q, version 10, or later, it is impossible to work with File APIs, so SimpleFileBrowser uses the Storage Access Framework to browse the files. The consequence is that paths returned by SAF are not File API compatible, and a SAF path looks like `content://com.android.externalstorage.documents/tree/primary%3A/document/primary%3APictures`. To simulate the behaviour of the File API on all devices, including SAF, the plugin provides the FileBrowserHelpers functions. There is also a user-facing symptom, that the file browser shows no files on Android 10 and later until the user clicks the Browse button in the quick links section. A related FAQ entry notes that on Mac with sandboxing enabled the browser shows no files, which is a known issue with no estimated fix.

## The build and platform troubleshooting

The FAQ collects the failure modes people actually hit, and they are mostly Android build issues. An Android build that fails with attribute android:requestLegacyExternalStorage not found is because that attribute grants full storage access on Android 10 and requires an Android SDK of at least SDK 29, and if you cannot update, you open `SimpleFileBrowser.aar` with WinRAR or 7-Zip and remove the `<application ... />` tag from the manifest. A build failing with D8 and a NullPointerException on transforming the aar is a Gradle version problem, since the plugin uses Gradle 7.5.1 and Android Gradle plug-in 7.4.2, so your Unity version has to be compatible. A ClassNotFoundException for `com.yasirkula.unity.FileBrowserPermissionReceiver` in Logcat means you need the Custom Proguard File option in Player Settings with the line `-keep class com.yasirkula.unity.* { *; }`. And a RequestPermission call returning Permission.Denied on Android means declaring WRITE_EXTERNAL_STORAGE manually in the AndroidManifest with the tools:node attribute, and adding the xmlns:tools declaration to the manifest element.

## Version constraints in the FAQ, and what to plan for

The remaining FAQ entries are about Unity versions, and they tell you which combinations are unmaintained. The New Input System is not supported on Unity 2019.2.5 or earlier, and the fix is to add the `ENABLE_INPUT_SYSTEM` compiler directive to Player Settings under Scripting Define Symbols, with the note that these symbols are platform specific, so changing the active platform means adding the directive again. On Unity 2018.4 or earlier, the Unity.InputSystem assembly cannot be resolved, and the fix is to remove Unity.InputSystem from the SimpleFileBrowser.Runtime assembly definition file's Assembly Definition References list. There is also a separate entry for Unity 2021.3.x, and one for Oculus Quest where the browser shows no files, with links to the relevant issues in each case. The pattern across all of these is that the plugin tracks recent Unity versions and the oldest ones are where the friction is, so a project on a current Unity release has the least to configure.

## Conclusion

Adopt Unity Simple File Browser if your Unity game needs a save or load dialog built from uGUI, since that is exactly what it is for and it avoids a second window that would break the flow. Skip it if you need the file browser on WebGL or UWP, which are not supported, or if you need native OS dialogs rather than an in-game one. Before you ship on Android, note the Storage Access Framework behaviour on Android 10 and later, where the File API is not available and the user must first click the Browse button in the quick links, and expect the returned paths on those versions not to be File API compatible.

## FAQ

### What is Unity Simple File Browser?

A uGUI based runtime file browser plugin for Unity 3D that shows save and load dialogs during gameplay. It behaves like a Windows file chooser, with search by name or type, quick links, folder picking, multi-select, a draggable and resizable window, and it can be reskinned.

### How do I install Unity Simple File Browser?

Five ways: import the SimpleFileBrowser.unitypackage from the releases, move the Plugins folder into your project's Assets folder, import it from the Unity Asset Store, install it in the Package Manager from its git URL, or run `openupm add com.yasirkula.simplefilebrowser` after installing openupm-cli.

### Why does the file browser show no files on Android 10 and later?

Because the File API cannot be used on Android Q and later, so the plugin uses the Storage Access Framework, and users must first click the Browse button in the quick links section. Paths returned that way are not File API compatible, and the plugin offers FileBrowserHelpers to simulate that behaviour.

### Can I show a file browser in a WebGL or UWP build?

No. The README states that Universal Windows Platform and WebGL platforms are not supported.

## Sources

- [Issues](https://github.com/yasirkula/UnitySimpleFileBrowser/issues)
- [License: MIT](https://github.com/yasirkula/UnitySimpleFileBrowser/blob/master/LICENSE)
- [README](https://github.com/yasirkula/UnitySimpleFileBrowser/blob/master/README.md)
- [Releases](https://github.com/yasirkula/UnitySimpleFileBrowser/releases)
- [yasirkula/UnitySimpleFileBrowser on GitHub](https://github.com/yasirkula/UnitySimpleFileBrowser)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/yasirkula-unitysimplefilebrowser
