forked from Shardstone/trail-into-darkness
added documentation, fixed some bugs
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using Jovian.PopupSystem;
|
||||
using Jovian.PopupSystem.UI;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// Example: Using PopupSystem with dynamically instantiated UI elements.
|
||||
///
|
||||
/// When UI elements are created at runtime (e.g. inventory slots, party member portraits),
|
||||
/// use InitializeTriggersInChildren to scan and bind triggers after instantiation.
|
||||
/// </summary>
|
||||
public class DynamicTriggersExample : MonoBehaviour {
|
||||
[SerializeField] PopupSettings popupSettings;
|
||||
[SerializeField] PopupReference popupReferencePrefab;
|
||||
[SerializeField] Transform canvasRoot;
|
||||
[SerializeField] Transform slotsContainer;
|
||||
[SerializeField] GameObject slotPrefab;
|
||||
|
||||
IPopupSystem popupSystem;
|
||||
|
||||
void Start() {
|
||||
popupSystem = new PopupSystem(popupSettings, popupReferencePrefab, canvasRoot);
|
||||
popupSystem.RegisterCategory(PopupCategory.Item, priority: 5);
|
||||
|
||||
// Simulate creating dynamic UI slots
|
||||
for(int i = 0; i < 5; i++) {
|
||||
Instantiate(slotPrefab, slotsContainer);
|
||||
}
|
||||
|
||||
// Scan the container for any PopupTrigger components on the new slots.
|
||||
// Each trigger is automatically bound to the popup system.
|
||||
// The configure callback lets you set content per trigger.
|
||||
popupSystem.InitializeTriggersInChildren(slotsContainer, trigger => {
|
||||
var slotName = trigger.gameObject.name;
|
||||
trigger.SetContent(builder => {
|
||||
builder
|
||||
.AddHeader(slotName)
|
||||
.AddSeparator()
|
||||
.AddText("This is a dynamically created slot.");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void Update() {
|
||||
popupSystem?.Tick(Time.deltaTime);
|
||||
}
|
||||
|
||||
void OnDestroy() {
|
||||
popupSystem?.Dispose();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user