/UnityEventDrawerEx

This plugin extends the UnityEventDrawer to display runtime calls in the inspector.

Primary LanguageC#MIT LicenseMIT

Unity Event Drawer Extension


PRs Welcome

<< 📝 Description | 📌 Key Features | ⚙ Installation | 🚀 Getting Started | 🤝 Contributing >>

📝 Description

image

This package extends the UnityEventDrawer to display runtime calls in the inspector.

What is "runtime calls"?

Button.onClick and Toggle.OnChangeValue etc. are known as UnityEvent.
UnityEvent has two types of callbacks:

  • Persistent call
    • You can add callbacks from the inspector.
    • You can add callbacks from a script using UnityEventTools.AddPersistentListener.
    • It will be serialized and displayed in the inspector.
      persistent
  • Runtime call
    • You can add a callback from a script with UnityEvent.AddListener.
    • It will be not serialized and displayed in the inspector. runtime

Display your runtime calls

This package extends UnityEventDrawer to display runtime calls in the inspector.
If the runtime call is an instance method, its target is also displayed.
This plugin supports all events that inherit UnityEvent<T0> - UnityEvent<T0, T1, T2, T3> as well as UnityEvent.
Even if the persistent call is empty, UnityEvent is displayed compactly in the inspector.

public class TestBehavior : MonoBehaviour
{
	[System.Serializable] public class TransformUnityEvent : UnityEngine.Events.UnityEvent<Transform>{};

	[SerializeField] TransformUnityEvent onYourCustomEvent = new TransformUnityEvent();
	
	void OnEnable()
	{
		onYourCustomEvent.AddListener(TestTransform);
	}
	
	void TestTransform(Transform t)
	{
		Debug.Log("TestTransform has called : " + t);
	}
}

image

If you like a style of development that makes heavy use of runtime calls (MVP pattern, etc.), this package is for you!





📌 Key Features

  • Displays runtime calls in inspector
  • Expands/collapses the runtime call view
  • Displays instance method, its target is also displayed
  • If the persistent call is empty, displays it compactly
  • Supports dark skin
  • Supports all components as well as uGUI components like Button and Toggle
  • Supports EventTrigger



⚙ Installation

Install via OpenUPM

  • This package is available on OpenUPM package registry.
  • This is the preferred method of installation, as you can easily receive updates as they're released.
  • If you have openupm-cli installed, then run the following command in your project's directory:
    openupm add com.coffee.event-drawer-ex
    
  • To update the package, use Package Manager UI (Window > Package Manager) or run the following command with @{version}:
    openupm add com.coffee.event-drawer-ex@1.1.0
    

Install via UPM (with Package Manager UI)

  • Click Window > Package Manager to open Package Manager UI.
  • Click + > Add package from git URL... and input the repository URL: https://github.com/mob-sakai/UnityEventDrawerEx.git
  • To update the package, change suffix #{version} to the target version.
    • e.g. https://github.com/mob-sakai/UnityEventDrawerEx.git#1.1.0

Install via UPM (Manually)

  • Open the Packages/manifest.json file in your project. Then add this package somewhere in the dependencies block:

    {
      "dependencies": {
        "com.coffee.event-drawer-ex": "https://github.com/mob-sakai/UnityEventDrawerEx.git",
        ...
      }
    }
  • To update the package, change suffix #{version} to the target version.

    • e.g. "com.coffee.event-drawer-ex": "https://github.com/mob-sakai/UnityEventDrawerEx.git#1.1.0",

Install as Embedded Package

  1. Download a source code zip file from Releases and extract it.
  2. Place it in your project's Packages directory.
  • If you want to fix bugs or add features, install it as an embedded package.
  • To update the package, you need to re-download it and replace the contents.



🚀 Getting Started

  1. Install the package.

  2. Add a runtime call, such as Button.onClick.AddListener (method).

  3. Information about the runtime call is displayed in the inspector.
    image

  4. Enjoy!



🤝 Contributing

Issues

Issues are incredibly valuable to this project:

  • Ideas provide a valuable source of contributions that others can make.
  • Problems help identify areas where this project needs improvement.
  • Questions indicate where contributors can enhance the user experience.

Pull Requests

Pull requests offer a fantastic way to contribute your ideas to this repository.
Please refer to CONTRIBUTING.md and develop branch for guidelines.

Support

This is an open-source project developed during my spare time.
If you appreciate it, consider supporting me.
Your support allows me to dedicate more time to development. 😊




License

  • MIT

Author

See Also