Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A wrapper that allows you to serialize interfaces

License

NotificationsYou must be signed in to change notification settings

Thundernerd/Unity3D-SerializableInterface

Repository files navigation

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 theopenupm registry. You can install it viaopenupm-cli.
openupm add net.tnrd.serializableinterface
  1. Installing through aUnity Package created by thePackage Installer Creator fromNeedle

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

License

Stars

Watchers

Forks

Sponsor this project

    Packages

     
     
     

    Contributors9

    Languages


    [8]ページ先頭

    ©2009-2025 Movatter.jp