forked from Shardstone/trail-into-darkness
Made the popup system a lot more generic
This commit is contained in:
@@ -6,7 +6,9 @@ using UnityEngine;
|
||||
/// 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.
|
||||
/// use InitializeTriggersInChildren to scan, bind, and configure triggers after instantiation.
|
||||
/// The callback receives both the trigger (MonoBehaviour, for hierarchy queries) and the
|
||||
/// view (behavior handler, for setting content).
|
||||
/// </summary>
|
||||
public class DynamicTriggersExample : MonoBehaviour {
|
||||
[SerializeField] PopupSettings popupSettings;
|
||||
@@ -21,21 +23,17 @@ public class DynamicTriggersExample : MonoBehaviour {
|
||||
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 => {
|
||||
popupSystem.InitializeTriggersInChildren(slotsContainer, (trigger, view) => {
|
||||
var slotName = trigger.gameObject.name;
|
||||
trigger.SetContent(builder => {
|
||||
view.SetContent(builder => {
|
||||
builder
|
||||
.AddHeader(slotName)
|
||||
.AddSeparator()
|
||||
.AddText("This is a dynamically created slot.");
|
||||
.AddText(slotName, PopupElementType.Header)
|
||||
.AddSeparator(PopupElementType.Separator)
|
||||
.AddText("This is a dynamically created slot.", PopupElementType.Text);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user