Skip to content

Simple UI notifications package for Unity game engine

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE.meta
Notifications You must be signed in to change notification settings

3d-group/unity-simple-notifications

Repository files navigation

npm package openupm License: MIT

Unity simple notifications

Simple but powerful UI notifications package for Unity game engine.

How to use

  1. Right click scene hierarchy
  2. Click UI/Notifications

HowTo

Now you can send Notifications from your script like this:

Notifications.Send("Hello world");

Notification

Specify type (changes notification color) and click events with optional parameters:

private void Error()
{
   Notifications.Send("Spooky error!", NotificationType.Error, OnClick);
}

public void OnClick()
{
    // Do something.
}

There is also async overload:

await Notifications.SendAsync("Warning!", NotificationType.Warning);

You can also hook Translation / any fuction to handle messages before sending like so:

private void Start()
{
    Notifications.TranslationFunction = Translate;
}

private string Translate(string key)
{
    // Do something.
    return key;
}

Install

via npm

Open Packages/manifest.json with your favorite text editor. Add a scoped registry and following line to dependencies block:

{
  "scopedRegistries": [
    {
      "name": "npmjs",
      "url": "https://registry.npmjs.org/",
      "scopes": [
        "com.3d-group"
      ]
    }
  ],
  "dependencies": {
    "com.3d-group.unity-simple-notifications": "1.0.0"
  }
}

Package should now appear in package manager.

via OpenUPM

The package is also available on the openupm registry. You can install it eg. via openupm-cli.

openupm add com.3d-group.unity-simple-notifications

via Git URL

Open Packages/manifest.json with your favorite text editor. Add following line to the dependencies block:

{
  "dependencies": {
    "com.3d-group.unity-simple-notifications": "https://github.com/3d-group/unity-simple-notifications.git"
  }
}

Tests

The package can optionally be set as testable. In practice this means that tests in the package will be visible in the Unity Test Runner.

Open Packages/manifest.json with your favorite text editor. Add following line after the dependencies block:

{
  "dependencies": {
  },
  "testables": [ "com.3d-group.unity-simple-notifications" ]
}

Performance and thread safety 🚀

  • Notifications are rate limited based on duplicates sent recently and max notifications queue length
  • Notifications can be send from another thread. Creating GameObjects still always happens on main thread

Here is how it looks when billion notifications are sent simultaneously from another thread: 😄

Notification

Try it yourself! Code:

using UnityEngine;
using System.Threading;
using Group3d.Notifications;

public class TEST : MonoBehaviour
{
    private void Start()
    {
        new Thread(() =>
        {
            Thread.CurrentThread.IsBackground = true;
            var r = new System.Random();
            int counter = 0;
            while (counter < 1000000000)
            {
                Notifications.Send($"Test {r.Next(0, 10000)}");
                counter++;
            }
        }).Start();
    }
}

Configuration

Confurable from the inspector:

Inspector

Custom notification prefab can be created and assigned in the inspector. If doing so, consider these things:

  • Prefab must have NotificationUI component (included in the package)
  • Prefab must have RectTransform component with anchors set to top-stretch

If prefab is null, notification will be created dynamically.

Optional Font parameter is only used when notification is created dynamically - if that is the only thing you want to change.