An insanely fast, lightweight, fully typed and documented
open-source signal module for Roblox, with dynamic types.
Performance, efficiency, features.
Signal+ is for developers who strive for performance and efficiency.
And it still has all the features you’ll ever need!
It’s perhaps the best of its kind,
beating the top alternatives like
Good-, Lemon- and FastSignal.
The perfect replacement for BindableEvents.
Get started!
💡 Tutorial
Quick setup
Let’s first get the module. There are two ways:
-
Get it from the creator store:
- Click
Get
at the top of this post. - Click
Get Model
on the store. - Open the ToolBox in Roblox Studio.
- Go to the
Inventory
tab. - Click on
Signal+
.
- Click
-
Get it from GitHub:
- Click
Git
at the top of this post. - Go to
Releases
. - Download the latest
.rbxm
file. - Find the file in your file explorer.
- Drag the file into Roblox Studio.
- Click
Basics
In any script, simply require the module. It will return a signal creation function.
local SignalPlus = require(script.SignalPlus)
local mySignal = SignalPlus() -- Creates a new signal.
Order
The order in which connections are fired is mostly reliable but not in correct order — it’s backwards.
signal:Connect(function() print("A") end)
signal:Connect(function() print("B") end)
signal:Connect(function() print("C") end)
signal:Connect(function() print("D") end)
signal:Fire() -- Fires in reverse: D, C, B, A.
But it’s only reliable before disconnects.
Whenever a connection is disconnected, the last (at the end of the list) connection will take over the disconnected connection’s place.
signal:Connect(function() print("A") end)
local b = signal:Connect(function() print("B") end)
signal:Connect(function() print("C") end)
signal:Connect(function() print("D") end)
b:Disconnect() -- Switches out B for D: A, D, C.
signal:Fire() -- Fires in reverse: C, D, A.
Custom types
It’s extremely easy to define custom types for your signals with Signal+.
You can provide your own parameters as shown in the screenshot.
local mySignal = SignalPlus() :: SignalPlus.Signal<PARAMETERS_HERE>
Not only will Connect
, Once
and Wait
display your custom parameters, but so will Fire
.
API reference
SignalPlus()
→ Signal
Signal:
-
:Connect(Function)
→ Connection- Connects the given function.
-
:Once(Function)
→ Connection- Connects the given function, but disconnects after first fire.
-
:Wait()
→ Arguments- Yields the calling thread until the next fire.
-
:Fire()
- Fires all callbacks and resumes all waiting threads.
-
:DisconnectAll()
- Disconnects all connections.
-
:Destroy()
- Disconnects all connections, and makes the signal unusable.
Connection:
-
:Disconnect()
- Disconnects the connection.
To reconnect, make a new connection.
- Disconnects the connection.
Don’t forget to stay up-to-date!
It’s highly recommended to have the latest version at all times. This ensures:
- Newest features.
- Best performance.
- Little to no bugs.
You can view all releases (versions) and what they contain at the GitHub repository.
Major updates will be posted here, in the replies section, too.
Share your thoughts!
If you have any questions, feel free to leave them below.
But most importantly:
- Report any bugs or mistakes you find for this asset and post!
- Consider providing feedback to help me and the asset improve!
Like what you're seeing?
Check out more from me!
∙ Tween+|Optimized & advanced tweening∙ Text+|Custom fonts & advanced control
Tags
module script signal rbxscriptsignal bindableevent features open source scripting performance optimization optimized fast custom types