OSL Easy Patcher
A lightweight Unity patcher for teams that need runtime content updates without adopting a full Addressables workflow. It downloads only changed files and can continue partial transfers when the host supports HTTP Range requests.
Table of Contents
- Overview
- Who Should Use This
- Requirements
- Installation
- Quick Start
- Editor — Uploader Window
- Runtime Setup
- Custom Loader (IOSLLoader)
- Frequently Asked Questions
- Troubleshooting
Overview
OSL Easy Patcher compares a remote version.json manifest with the local cache, downloads only missing or changed files, and retries failures per file. Its Editor uploader supports Local Folder, Google Cloud Storage, AWS S3, Unity CCD, and Azure Blob Storage without bundling the corresponding cloud SDKs.
Who Should Use This
Use OSL Easy Patcher when your Unity project needs:
- Runtime delivery of changed files
- Resume support for interrupted large files on HTTP Range-capable hosts
- A lightweight patching workflow controlled from the Unity Editor
- Manifest-based patch checks
- A custom loader hook for your own asset loading strategy
Requirements
| Item | Version |
|---|---|
| Unity | 2021.3 LTS or later |
| Tested Unity versions | 2021.3.45f2 and 6000.3.12f1 (package-isolation import and compile) |
| .NET Standard | 2.1 |
| HTTP host | Range request support required for partial-file resume |
| TextMeshPro (optional) | Auto-detected when available |
Installation
- Search for OSL Easy Patcher in the Unity Asset Store, or open it directly at Unity Asset Store (OSL Easy Patcher).
- Click Add to My Assets.
- Open Unity and navigate to Window > Package Manager.
- Select Packages: My Assets from the dropdown.
- Locate OSL Easy Patcher, download it, and click Import.
- Wait for Unity to finish script compilation.
Quick Start
Goal: confirm that the package is imported and the local patch flow can run.
- Prepare a local folder containing test patch files.
- Open Tools > OSL > Easy Patcher Uploader from the Unity menu bar.
- Select the test patch folder.
- Generate the manifest and send/copy the test files to a local destination.
- Configure a test Remote Base URL or local test server.
- Add
OSLPatchUIControllerto a loading scene. - Press Play and confirm that the patch check runs.
Editor — Uploader Window
Open via OSL → Easy Patcher Uploader in the Unity menu bar.
| Field | Description |
|---|---|
| Active Slot | Selects which version slot to work on. |
| Patch Folder | The local folder containing your built patch files. |
| Refresh | Re-scans the folder and rebuilds the file tree. |
| Upload Backend | Selects the configured upload destination. |
| Generate Manifest & Upload | Generates a manifest and sends files through the selected workflow. |
Runtime Setup
- Add the
OSLPatchUIControllercomponent to a GameObject in your loading scene. - Assign the Remote Base URL, Progress Slider, Status Text, and Size Text fields.
- Set the Loader field to an
OSLSimpleBundleLoaderinstance or your customIOSLLoaderimplementation.
Custom Loader (IOSLLoader)
Implement IOSLLoader to use Addressables, a custom bundle system, or any other asset loading strategy:
[Serializable]
public class MyCustomLoader : IOSLLoader
{
public async Task InitializeAsync() { /* ... */ }
public async Task<T> LoadAssetAsync<T>(string key) where T : Object { /* ... */ }
public void ReleaseAsset(string key) { /* ... */ }
}
Frequently Asked Questions
Q: Where are patch files cached on the player's device?
A: Application.persistentDataPath/OSL/EasyPatcher/ by default.
Q: What happens if the download is interrupted?
A: A later run can continue the partial file when the HTTP host honors Range requests. If the host ignores Range, the integrity check can reject the appended file and retry it from the beginning.
Q: Can I patch non-AssetBundle files?
A: Yes. The patch system transfers files, and loading is handled by your IOSLLoader implementation.
Troubleshooting
| Symptom | Likely cause | Action |
|---|---|---|
| Patch check does not start | Runtime component is not assigned | Confirm OSLPatchUIController exists in the loading scene. |
| Test files are not detected | Patch folder is empty or not refreshed | Refresh the uploader window and check the selected folder. |
| Assets do not load after patching | Loader setup is incomplete | Assign or implement the correct IOSLLoader. |
| UI text or progress does not update | UI references are missing | Assign the progress and status fields in the Inspector. |