Unclaimed Package Is this your package? Claim it to unlock full analytics and manage your listing.
Claim This Package

Install via UPM

Add to Unity Package Manager using this URL

https://www.pkglnk.dev/serializablecallback.git

README Markdown

Copy this to your project's README.md

Style
Preview
pkglnk installs badge
## Installation

Add **SerializableCallback** to your Unity project via Package Manager:

1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/serializablecallback.git
```

[![pkglnk](https://www.pkglnk.dev/badge/serializablecallback.svg?style=pkglnk)](https://www.pkglnk.dev/pkg/serializablecallback)

README

SerializableCallback

Lets you drag-and-drop methods with or without return values / parameters in the Unity inspector. It uses expression trees and reflection to cache a delegate on first execution.

Usage is identical to UnityEvent

unity_inspector

public class MyClass : MonoBehaviour {
    //These fields are shown in the inspector
    public SerializableCallback callback; // supports all non-void return types
    public Condition condition; // supports bool return types only
    public GetProduct getProduct; // supports MyProduct return types only

    void Start() {
        // Callbacks can be invoked with or without parameters, and with different types
        Debug.Log(callback.Invoke()); // returns object
        Debug.Log(condition.Invoke()); // returns bool
        Debug.Log(getProduct.Invoke(2)); // returns MyProduct
    }

    // As with UnityEvents, custom callbacks must have a non-generic wrapper class marked as [Serializable] in order to be serialized by Unity
    [Serializable]
    public class Condition : SerializableCallback<bool> {}

    // Last generic type parameter is the return type, staying consistent with System.Func
    [Serializable]
    public class GetProduct : SerializableCallback<int, MyProduct> {}
}
Performance (100000 iterations) Time
bool Method(float) 00.00304s
SerializedCallback<float, bool> (Persistent) 00.01026s
SerializedCallback<float, bool> (Dynamic) 00.00797s

Installing with Unity Package Manager

To install this project as a dependency using the Unity Package Manager, add the following line to your project's manifest.json:

"com.github.siccity.serializablecallback": "git+https://github.com/Siccity/SerializableCallback.git"

Join the Discord server to leave feedback or get support.

Comments

No comments yet. Be the first!