Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Siccity/SerializableCallback
UnityEvent and System.Func had a child
https://github.com/Siccity/SerializableCallback
callback serializable unity
Last synced: 3 months ago
JSON representation
UnityEvent and System.Func had a child
- Host: GitHub
- URL: https://github.com/Siccity/SerializableCallback
- Owner: Siccity
- License: mit
- Created: 2017-12-22T10:15:22.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-04-03T18:18:19.000Z (7 months ago)
- Last Synced: 2024-04-24T16:42:09.685Z (7 months ago)
- Topics: callback, serializable, unity
- Language: C#
- Homepage:
- Size: 44.9 KB
- Stars: 349
- Watchers: 11
- Forks: 53
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
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](https://user-images.githubusercontent.com/6402525/34294989-46de127e-e70b-11e7-84f0-99bc4525a8f5.png)
```csharp
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 onlyvoid 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 {}// Last generic type parameter is the return type, staying consistent with System.Func
[Serializable]
public class GetProduct : SerializableCallback {}
}
```| Performance (100000 iterations) | Time |
| -------------------------------------------- | --------- |
| bool Method(float) | 00.00304s |
| SerializedCallback (Persistent) | 00.01026s |
| SerializedCallback (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](https://discord.gg/qgPrHv4 "Join Discord server") server to leave feedback or get support.