Skip to content

Repository files navigation

Serializable Interface

GitHub package.json versionGitHub issuesGitHub pull requestsGitHub licenseGitHub last commit

A wrapper that allows you to serialize interfaces. Both UnityEngine.Object and regular object implementers work!

Installation

  1. The package is available on the openupm registry. You can install it via openupm-cli.
openupm add net.tnrd.serializableinterface
  1. Installing through a Unity Package created by the Package Installer Creator from Needle

Usage

Usage is pretty easy and straightforward. Assuming you have the following interface

publicinterfaceIMyInterface{voidGreet();}

You can add it to a behaviour like so

usingTNRD;usingUnityEngine;publicclassMyBehaviour:MonoBehaviour{[SerializeField]privateSerializableInterface<IMyInterface>mySerializableInterface;privatevoidAwake(){mySerializableInterface.Value.Greet();}}

Back in the Unity inspector it will look like this

image

And when you click on the object selector button you will be shown a dropdown window with all possible options like this

image

As you can see you can select items from multiple locations:

  • Assets (Scriptable Objects and Prefabs that implement said interface)
  • Classes (custom classes that implement said interface)
  • Scene (objects in the scene that implement said interface)

For the sake of example for the image above I have created some simple implementations

usingUnityEngine;publicclassMyComponent:MonoBehaviour,IMyInterface{/// <inheritdoc />publicvoidGreet(){Debug.Log("Hello, World! I'm MyComponent");}}
usingUnityEngine;publicclassMyPoco:IMyInterface{/// <inheritdoc />publicvoidGreet(){Debug.Log("Hello, World! I'm MyPoco");}}
usingUnityEngine;[CreateAssetMenu(menuName="MyScriptable")]publicclassMyScriptable:ScriptableObject,IMyInterface{/// <inheritdoc />publicvoidGreet(){Debug.Log("Hello, World! I'm MyScriptable");}}

Support

Serializable Interface is a small and open-source utility that I hope helps other people. It is by no means necessary but if you feel generous you can support me by donating.

ko-fi

Contributions

Pull requests are welcomed. Please feel free to fix any issues you find, or add new features.

About

A wrapper that allows you to serialize interfaces

Resources

Stars

298 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages