Inventool Action Menu UGUI
🧭 InventoolActionMenuUGUI Class
A pop‑up menu for custom actions.
Namespace:
Esper.Inventool.UI.UGUI
Access:public
Type:class
Inherits:CrossInputSupportedWindowUGUI
📦 Fields
protected
optionPrefab
ActionMenuOptionUGUI
The action menu option prefab.
protected
optionContainer
RectTransform
RectTransform that will contain all options.
protected
closeButton
Button
Full‑screen invisible close button.
protected
canvasGroup
CanvasGroup
Canvas group component.
protected
loadedOptions
List<ActionMenuOptionUGUI>
List of loaded action menu options.
public static
Instance
InventoolActionMenuUGUI
The active instance.
🧰 Methods
protected override
Awake()
void
Initializes singleton, sets up UI, wires close button, and closes initially.
protected virtual
CreateMenuOption(ActionMenuOption actionMenuOption)
ActionMenuOptionUGUI
Instantiates and configures a menu option UI element.
public virtual
Open(RectTransform target, params ActionMenuOption[] options)
void
Opens the action menu at target; orders, creates, and displays options.
public virtual
Open(RectTransform target, List<ActionMenuOption> options)
void
Overload that accepts a list; delegates to params overload.
public virtual
Close()
void
Closes the action menu and invokes onClosed
.
protected
ForceInsideView(RectTransform target)
IEnumerator
Positions content near target or mouse and clamps inside viewport.
Active Instance
You can get the active InventoolActionMenuUGUI
instance with InventoolActionMenuUGUI.Instance
. Ensure there's an instance of it in your scene before using this field.
Opening
Opening the action menu requires a RectTransform
target and a list of Action Menu Options.
InventoolActionMenuUGUI.Instance.Open(targetElement, myMenuOptions);
Closing
InventoolActionMenuUGUI.Instance.Close();
Customizations
The options displayed on the action menu are customizable through scripting.
Customize For Inventory Item Stacks
To customize the action menu options displayed when an item stack in the inventory is clicked, edit the ItemStack.actionMenuOptionsGetter
field.
using Esper.Inventool.Items;
using Esper.Inventool.UI;
using System.Collections.Generic;
using UnityEngine;
public class ActionMenuCustomizer : MonoBehaviour
{
public Sprite myIcon;
private void Awake()
{
// Apply the customization on awake
ItemStack.actionMenuOptionsGetter = MyActionMenuOptionsGetter;
}
/// <summary>
/// Creates and returns the action menu options.
/// </summary>
/// <param name="itemStack">The item stack target to create the options for.</param>
/// <returns>A list of action menu options.</returns>
private List<ActionMenuOption> MyActionMenuOptionsGetter(ItemStack itemStack)
{
// Create a list that will contain the options
var options = ItemStack.GetDefaultActionMenuOptions(itemStack);
// Add an option
var myOption = new ActionMenuOption()
{
// Set the button text (smallcaps is generally used for styling purposes)
text = $"<smallcaps>My Option</smallcaps>",
// Set the button color
backgroundColor = new Color(0.3f, 0.3f, 0.3f),
// Set its order in the menu (lower numbers appear at the top)
sortingOrder = 0,
// Create an on-click action
action = () => Debug.Log("Do something"),
// Display a small icon beside the text
icon = myIcon
};
options.Add(myOption);
return options;
}
}
If you'd like a reference, you can find the original in the ItemStack.actionMenuOptionsGetter
field in the ItemStack.cs script.
Customize For Equipment Slots
To customize the action menu options displayed when an equipment slot in the inventory is clicked, edit the EquipmentSlot.actionMenuOptionsGetter
field.
using Esper.Inventool;
using Esper.Inventool.UI;
using System.Collections.Generic;
using UnityEngine;
public class ActionMenuCustomizer : MonoBehaviour
{
private void Awake()
{
// Apply the customization on awake
EquipmentSlot.actionMenuOptionsGetter = MyActionMenuOptionsGetter;
}
/// <summary>
/// Creates and returns the action menu options.
/// </summary>
/// <param name="slot">The equipment slot target to create the options for.</param>
/// <returns>A list of action menu options.</returns>
private List<ActionMenuOption> MyActionMenuOptionsGetter(EquipmentSlot slot)
{
// Create a list that will contain the options
var options = EquipmentSlot.GetDefaultActionMenuOptions(slot);
// Add an option
var myOption = new ActionMenuOption()
{
// Set the button text (smallcaps is generally used for styling purposes)
text = $"<smallcaps>My Option</smallcaps>",
// Set the button color
backgroundColor = new Color(0.3f, 0.3f, 0.3f),
// Set its order in the menu (lower numbers appear at the top)
sortingOrder = 0,
// Create an on-click action
action = () => Debug.Log("Do something")
};
options.Add(myOption);
return options;
}
}
If you'd like a reference, you can find the original in the EquipmentSlot.actionMenuOptionsGetter
field in the EquipmentSlot.cs script.
Last updated