Table of Contents

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

  1. Overview
  2. Who Should Use This
  3. Requirements
  4. Installation
  5. Quick Start
  6. Editor — Uploader Window
  7. Runtime Setup
  8. Custom Loader (IOSLLoader)
  9. Frequently Asked Questions
  10. 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

  1. Search for OSL Easy Patcher in the Unity Asset Store, or open it directly at Unity Asset Store (OSL Easy Patcher).
  2. Click Add to My Assets.
  3. Open Unity and navigate to Window > Package Manager.
  4. Select Packages: My Assets from the dropdown.
  5. Locate OSL Easy Patcher, download it, and click Import.
  6. Wait for Unity to finish script compilation.

Quick Start

Goal: confirm that the package is imported and the local patch flow can run.

  1. Prepare a local folder containing test patch files.
  2. Open Tools > OSL > Easy Patcher Uploader from the Unity menu bar.
  3. Select the test patch folder.
  4. Generate the manifest and send/copy the test files to a local destination.
  5. Configure a test Remote Base URL or local test server.
  6. Add OSLPatchUIController to a loading scene.
  7. 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

  1. Add the OSLPatchUIController component to a GameObject in your loading scene.
  2. Assign the Remote Base URL, Progress Slider, Status Text, and Size Text fields.
  3. Set the Loader field to an OSLSimpleBundleLoader instance or your custom IOSLLoader implementation.

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.