-
Notifications
You must be signed in to change notification settings - Fork 15
Scriptable Architecture
DucNV_2000 edited this page Feb 28, 2024
·
21 revisions
Scriptable Objects are an immensely powerful yet often underutilized feature of Unity. Learn how to get the most out of this versatile data structure and build more extensible systems and data patterns.
Introductory video about Game Architecture with Scriptable Objects

You can create Scriptable Event by 3 option
- Option 1: via menu
Create>Sunflower>Scriptable>Event

- Option 2: menu item
Sunflower>Scriptable>Create Event

- Option 3: Open tab
Scriptable EventinSunflower Control Panel

- Scriptable Event no parameter

- Scriptable Event has parameter (int, float, string, bool, vector3,...)

You can raise events by code or by the inspector (Enable Debug Field > button Raise Event)
public class Player : MonoBehaviour
{
public EventNoParam playerAttackEvent;
public void Attack()
{
playerAttackEvent.Raise();
}
}
You can listener event by component Event Listener or by code

-
Binding-
UNTIL_DISABLE: the event is subscribed whenOnEnable()and unsubscribed whenOnDisable() -
UNTIL_DESTROY: the event is subscribed whenAwake()and unsubscribed whenOnDestroy()
-
-
Event Response Data-
Event: Drag scriptable event here -
Response(): Response() works similarly to a button'sOnClick, When the aboveEventis raised, the functions embedded inResponse()will be called
-
- Use
AddListenerto subscribe and unsubscribe
public EventNoParam playerAttackEvent;
private void OnEnable()
{
playerAttackEvent.AddListener(HandleAttack);
}
private void OnDisable()
{
playerAttackEvent.RemoveListener(HandleAttack);
}
void HandleAttack()
{
// Attack
}- Use
OnRaisedto subscribe and unsubscribe
public EventNoParam playerAttackEvent;
private void OnEnable()
{
playerAttackEvent.OnRaised += HandleAttack;
}
private void OnDisable()
{
playerAttackEvent.OnRaised -= HandleAttack;
}
void HandleAttack()
{
// Attack
}